packages feed

shentong-0.3.2: Shentong/Backend/Prolog.hs

{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE Strict #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE ViewPatterns #-}

module Backend.Prolog where

import Control.Monad.Except
import Control.Parallel
import Environment
import Core.Primitives as Primitives
import Backend.Utils
import Core.Types
import Core.Utils
import Wrap
import Backend.Toplevel
import Backend.Core
import Backend.Sys
import Backend.Sequent
import Backend.Yacc
import Backend.Reader

{-
Copyright (c) 2015, Mark Tarver
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. The name of Mark Tarver may not be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY Mark Tarver ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Mark Tarver BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-}

kl_shen_LBdefprologRB :: Core.Types.KLValue ->
                         Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBdefprologRB (!kl_V1618) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBpredicateMultRB) -> do !appl_1 <- kl_fail
                                                                                                                              !appl_2 <- appl_1 `pseq` (kl_Parse_shen_LBpredicateMultRB `pseq` eq appl_1 kl_Parse_shen_LBpredicateMultRB)
                                                                                                                              !kl_if_3 <- appl_2 `pseq` kl_not appl_2
                                                                                                                              case kl_if_3 of
                                                                                                                                  Atom (B (True)) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBclausesMultRB) -> do !appl_5 <- kl_fail
                                                                                                                                                                                                                                             !appl_6 <- appl_5 `pseq` (kl_Parse_shen_LBclausesMultRB `pseq` eq appl_5 kl_Parse_shen_LBclausesMultRB)
                                                                                                                                                                                                                                             !kl_if_7 <- appl_6 `pseq` kl_not appl_6
                                                                                                                                                                                                                                             case kl_if_7 of
                                                                                                                                                                                                                                                 Atom (B (True)) -> do !appl_8 <- kl_Parse_shen_LBclausesMultRB `pseq` hd kl_Parse_shen_LBclausesMultRB
                                                                                                                                                                                                                                                                       let !appl_9 = ApplC (Func "lambda" (Context (\(!kl_Parse_X) -> do !appl_10 <- kl_Parse_shen_LBpredicateMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBpredicateMultRB
                                                                                                                                                                                                                                                                                                                                         appl_10 `pseq` (kl_Parse_X `pseq` kl_shen_insert_predicate appl_10 kl_Parse_X))))
                                                                                                                                                                                                                                                                       !appl_11 <- kl_Parse_shen_LBclausesMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBclausesMultRB
                                                                                                                                                                                                                                                                       !appl_12 <- appl_9 `pseq` (appl_11 `pseq` kl_map appl_9 appl_11)
                                                                                                                                                                                                                                                                       !appl_13 <- appl_12 `pseq` kl_shen_prolog_RBshen appl_12
                                                                                                                                                                                                                                                                       !appl_14 <- appl_13 `pseq` hd appl_13
                                                                                                                                                                                                                                                                       appl_8 `pseq` (appl_14 `pseq` kl_shen_pair appl_8 appl_14)
                                                                                                                                                                                                                                                 Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean")))
                                                                                                                                                        !appl_15 <- kl_Parse_shen_LBpredicateMultRB `pseq` kl_shen_LBclausesMultRB kl_Parse_shen_LBpredicateMultRB
                                                                                                                                                        appl_15 `pseq` applyWrapper appl_4 [appl_15]
                                                                                                                                  Atom (B (False)) -> do do kl_fail
                                                                                                                                  _ -> throwError "if: expected boolean")))
                                       !appl_16 <- kl_V1618 `pseq` kl_shen_LBpredicateMultRB kl_V1618
                                       appl_16 `pseq` applyWrapper appl_0 [appl_16]

kl_shen_prolog_error :: Core.Types.KLValue ->
                        Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_prolog_error (!kl_V1627) (!kl_V1628) = do !kl_if_0 <- let pat_cond_1 kl_V1628 kl_V1628h kl_V1628t = do !kl_if_2 <- let pat_cond_3 kl_V1628t kl_V1628th kl_V1628tt = do let !appl_4 = Atom Nil
                                                                                                                                                                               !kl_if_5 <- appl_4 `pseq` (kl_V1628tt `pseq` eq appl_4 kl_V1628tt)
                                                                                                                                                                               case kl_if_5 of
                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                               pat_cond_6 = do do return (Atom (B False))
                                                                                                                            in case kl_V1628t of
                                                                                                                                   !(kl_V1628t@(Cons (!kl_V1628th)
                                                                                                                                                     (!kl_V1628tt))) -> pat_cond_3 kl_V1628t kl_V1628th kl_V1628tt
                                                                                                                                   _ -> pat_cond_6
                                                                                                               case kl_if_2 of
                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                   _ -> throwError "if: expected boolean"
                                                                  pat_cond_7 = do do return (Atom (B False))
                                                               in case kl_V1628 of
                                                                      !(kl_V1628@(Cons (!kl_V1628h)
                                                                                       (!kl_V1628t))) -> pat_cond_1 kl_V1628 kl_V1628h kl_V1628t
                                                                      _ -> pat_cond_7
                                                  case kl_if_0 of
                                                      Atom (B (True)) -> do !appl_8 <- kl_V1628 `pseq` hd kl_V1628
                                                                            !appl_9 <- appl_8 `pseq` kl_shen_next_50 (Core.Types.Atom (Core.Types.N (Core.Types.KI 50))) appl_8
                                                                            let !aw_10 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                            !appl_11 <- appl_9 `pseq` applyWrapper aw_10 [appl_9,
                                                                                                                          Core.Types.Atom (Core.Types.Str "\n"),
                                                                                                                          Core.Types.Atom (Core.Types.UnboundSym "shen.a")]
                                                                            !appl_12 <- appl_11 `pseq` cn (Core.Types.Atom (Core.Types.Str " here:\n\n ")) appl_11
                                                                            let !aw_13 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                            !appl_14 <- kl_V1627 `pseq` (appl_12 `pseq` applyWrapper aw_13 [kl_V1627,
                                                                                                                                            appl_12,
                                                                                                                                            Core.Types.Atom (Core.Types.UnboundSym "shen.a")])
                                                                            !appl_15 <- appl_14 `pseq` cn (Core.Types.Atom (Core.Types.Str "prolog syntax error in ")) appl_14
                                                                            appl_15 `pseq` simpleError appl_15
                                                      Atom (B (False)) -> do do let !aw_16 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                                !appl_17 <- kl_V1627 `pseq` applyWrapper aw_16 [kl_V1627,
                                                                                                                                Core.Types.Atom (Core.Types.Str "\n"),
                                                                                                                                Core.Types.Atom (Core.Types.UnboundSym "shen.a")]
                                                                                !appl_18 <- appl_17 `pseq` cn (Core.Types.Atom (Core.Types.Str "prolog syntax error in ")) appl_17
                                                                                appl_18 `pseq` simpleError appl_18
                                                      _ -> throwError "if: expected boolean"

kl_shen_next_50 :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_next_50 (!kl_V1635) (!kl_V1636) = do let !appl_0 = Atom Nil
                                             !kl_if_1 <- appl_0 `pseq` (kl_V1636 `pseq` eq appl_0 kl_V1636)
                                             case kl_if_1 of
                                                 Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.Str ""))
                                                 Atom (B (False)) -> do let pat_cond_2 = do return (Core.Types.Atom (Core.Types.Str ""))
                                                                            pat_cond_3 = do let pat_cond_4 kl_V1636 kl_V1636h kl_V1636t = do !appl_5 <- kl_V1636h `pseq` kl_shen_decons_string kl_V1636h
                                                                                                                                             !appl_6 <- kl_V1635 `pseq` Primitives.subtract kl_V1635 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                                                                             !appl_7 <- appl_6 `pseq` (kl_V1636t `pseq` kl_shen_next_50 appl_6 kl_V1636t)
                                                                                                                                             appl_5 `pseq` (appl_7 `pseq` cn appl_5 appl_7)
                                                                                                pat_cond_8 = do do let !aw_9 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                   applyWrapper aw_9 [ApplC (wrapNamed "shen.next-50" kl_shen_next_50)]
                                                                                             in case kl_V1636 of
                                                                                                    !(kl_V1636@(Cons (!kl_V1636h)
                                                                                                                     (!kl_V1636t))) -> pat_cond_4 kl_V1636 kl_V1636h kl_V1636t
                                                                                                    _ -> pat_cond_8
                                                                         in case kl_V1635 of
                                                                                kl_V1635@(Atom (N (KI 0))) -> pat_cond_2
                                                                                _ -> pat_cond_3
                                                 _ -> throwError "if: expected boolean"

kl_shen_decons_string :: Core.Types.KLValue ->
                         Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_decons_string (!kl_V1638) = do !kl_if_0 <- let pat_cond_1 kl_V1638 kl_V1638h kl_V1638t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1638t kl_V1638th kl_V1638tt = do !kl_if_6 <- let pat_cond_7 kl_V1638tt kl_V1638tth kl_V1638ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                       !kl_if_9 <- appl_8 `pseq` (kl_V1638ttt `pseq` eq appl_8 kl_V1638ttt)
                                                                                                                                                                                                                                                                       case kl_if_9 of
                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                    pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                                 in case kl_V1638tt of
                                                                                                                                                                                                                        !(kl_V1638tt@(Cons (!kl_V1638tth)
                                                                                                                                                                                                                                           (!kl_V1638ttt))) -> pat_cond_7 kl_V1638tt kl_V1638tth kl_V1638ttt
                                                                                                                                                                                                                        _ -> pat_cond_10
                                                                                                                                                                                                    case kl_if_6 of
                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                    pat_cond_11 = do do return (Atom (B False))
                                                                                                                                                 in case kl_V1638t of
                                                                                                                                                        !(kl_V1638t@(Cons (!kl_V1638th)
                                                                                                                                                                          (!kl_V1638tt))) -> pat_cond_5 kl_V1638t kl_V1638th kl_V1638tt
                                                                                                                                                        _ -> pat_cond_11
                                                                                                                                    case kl_if_4 of
                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                    pat_cond_12 = do do return (Atom (B False))
                                                                                                                 in case kl_V1638h of
                                                                                                                        kl_V1638h@(Atom (UnboundSym "cons")) -> pat_cond_3
                                                                                                                        kl_V1638h@(ApplC (PL "cons"
                                                                                                                                             _)) -> pat_cond_3
                                                                                                                        kl_V1638h@(ApplC (Func "cons"
                                                                                                                                               _)) -> pat_cond_3
                                                                                                                        _ -> pat_cond_12
                                                                                                    case kl_if_2 of
                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                        _ -> throwError "if: expected boolean"
                                                       pat_cond_13 = do do return (Atom (B False))
                                                    in case kl_V1638 of
                                                           !(kl_V1638@(Cons (!kl_V1638h)
                                                                            (!kl_V1638t))) -> pat_cond_1 kl_V1638 kl_V1638h kl_V1638t
                                                           _ -> pat_cond_13
                                       case kl_if_0 of
                                           Atom (B (True)) -> do !appl_14 <- kl_V1638 `pseq` kl_shen_eval_cons kl_V1638
                                                                 let !aw_15 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                 appl_14 `pseq` applyWrapper aw_15 [appl_14,
                                                                                                    Core.Types.Atom (Core.Types.Str " "),
                                                                                                    Core.Types.Atom (Core.Types.UnboundSym "shen.s")]
                                           Atom (B (False)) -> do do let !aw_16 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                     kl_V1638 `pseq` applyWrapper aw_16 [kl_V1638,
                                                                                                         Core.Types.Atom (Core.Types.Str " "),
                                                                                                         Core.Types.Atom (Core.Types.UnboundSym "shen.r")]
                                           _ -> throwError "if: expected boolean"

kl_shen_insert_predicate :: Core.Types.KLValue ->
                            Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_insert_predicate (!kl_V1641) (!kl_V1642) = do !kl_if_0 <- let pat_cond_1 kl_V1642 kl_V1642h kl_V1642t = do !kl_if_2 <- let pat_cond_3 kl_V1642t kl_V1642th kl_V1642tt = do let !appl_4 = Atom Nil
                                                                                                                                                                                   !kl_if_5 <- appl_4 `pseq` (kl_V1642tt `pseq` eq appl_4 kl_V1642tt)
                                                                                                                                                                                   case kl_if_5 of
                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                   pat_cond_6 = do do return (Atom (B False))
                                                                                                                                in case kl_V1642t of
                                                                                                                                       !(kl_V1642t@(Cons (!kl_V1642th)
                                                                                                                                                         (!kl_V1642tt))) -> pat_cond_3 kl_V1642t kl_V1642th kl_V1642tt
                                                                                                                                       _ -> pat_cond_6
                                                                                                                   case kl_if_2 of
                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                       _ -> throwError "if: expected boolean"
                                                                      pat_cond_7 = do do return (Atom (B False))
                                                                   in case kl_V1642 of
                                                                          !(kl_V1642@(Cons (!kl_V1642h)
                                                                                           (!kl_V1642t))) -> pat_cond_1 kl_V1642 kl_V1642h kl_V1642t
                                                                          _ -> pat_cond_7
                                                      case kl_if_0 of
                                                          Atom (B (True)) -> do !appl_8 <- kl_V1642 `pseq` hd kl_V1642
                                                                                !appl_9 <- kl_V1641 `pseq` (appl_8 `pseq` klCons kl_V1641 appl_8)
                                                                                !appl_10 <- kl_V1642 `pseq` tl kl_V1642
                                                                                !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym ":-")) appl_10
                                                                                appl_9 `pseq` (appl_11 `pseq` klCons appl_9 appl_11)
                                                          Atom (B (False)) -> do do let !aw_12 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                    applyWrapper aw_12 [ApplC (wrapNamed "shen.insert-predicate" kl_shen_insert_predicate)]
                                                          _ -> throwError "if: expected boolean"

kl_shen_LBpredicateMultRB :: Core.Types.KLValue ->
                             Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBpredicateMultRB (!kl_V1644) = do !appl_0 <- kl_V1644 `pseq` hd kl_V1644
                                           !kl_if_1 <- appl_0 `pseq` consP appl_0
                                           case kl_if_1 of
                                               Atom (B (True)) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Parse_X) -> do !appl_3 <- kl_V1644 `pseq` hd kl_V1644
                                                                                                                                       !appl_4 <- appl_3 `pseq` tl appl_3
                                                                                                                                       !appl_5 <- kl_V1644 `pseq` kl_shen_hdtl kl_V1644
                                                                                                                                       !appl_6 <- appl_4 `pseq` (appl_5 `pseq` kl_shen_pair appl_4 appl_5)
                                                                                                                                       !appl_7 <- appl_6 `pseq` hd appl_6
                                                                                                                                       appl_7 `pseq` (kl_Parse_X `pseq` kl_shen_pair appl_7 kl_Parse_X))))
                                                                     !appl_8 <- kl_V1644 `pseq` hd kl_V1644
                                                                     !appl_9 <- appl_8 `pseq` hd appl_8
                                                                     appl_9 `pseq` applyWrapper appl_2 [appl_9]
                                               Atom (B (False)) -> do do kl_fail
                                               _ -> throwError "if: expected boolean"

kl_shen_LBclausesMultRB :: Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBclausesMultRB (!kl_V1646) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_YaccParse) -> do !appl_1 <- kl_fail
                                                                                                             !kl_if_2 <- kl_YaccParse `pseq` (appl_1 `pseq` eq kl_YaccParse appl_1)
                                                                                                             case kl_if_2 of
                                                                                                                 Atom (B (True)) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Parse_LBeRB) -> do !appl_4 <- kl_fail
                                                                                                                                                                                                             !appl_5 <- appl_4 `pseq` (kl_Parse_LBeRB `pseq` eq appl_4 kl_Parse_LBeRB)
                                                                                                                                                                                                             !kl_if_6 <- appl_5 `pseq` kl_not appl_5
                                                                                                                                                                                                             case kl_if_6 of
                                                                                                                                                                                                                 Atom (B (True)) -> do !appl_7 <- kl_Parse_LBeRB `pseq` hd kl_Parse_LBeRB
                                                                                                                                                                                                                                       let !appl_8 = Atom Nil
                                                                                                                                                                                                                                       appl_7 `pseq` (appl_8 `pseq` kl_shen_pair appl_7 appl_8)
                                                                                                                                                                                                                 Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                 _ -> throwError "if: expected boolean")))
                                                                                                                                       !appl_9 <- kl_V1646 `pseq` kl_LBeRB kl_V1646
                                                                                                                                       appl_9 `pseq` applyWrapper appl_3 [appl_9]
                                                                                                                 Atom (B (False)) -> do do return kl_YaccParse
                                                                                                                 _ -> throwError "if: expected boolean")))
                                         let !appl_10 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBclauseMultRB) -> do !appl_11 <- kl_fail
                                                                                                                              !appl_12 <- appl_11 `pseq` (kl_Parse_shen_LBclauseMultRB `pseq` eq appl_11 kl_Parse_shen_LBclauseMultRB)
                                                                                                                              !kl_if_13 <- appl_12 `pseq` kl_not appl_12
                                                                                                                              case kl_if_13 of
                                                                                                                                  Atom (B (True)) -> do let !appl_14 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBclausesMultRB) -> do !appl_15 <- kl_fail
                                                                                                                                                                                                                                              !appl_16 <- appl_15 `pseq` (kl_Parse_shen_LBclausesMultRB `pseq` eq appl_15 kl_Parse_shen_LBclausesMultRB)
                                                                                                                                                                                                                                              !kl_if_17 <- appl_16 `pseq` kl_not appl_16
                                                                                                                                                                                                                                              case kl_if_17 of
                                                                                                                                                                                                                                                  Atom (B (True)) -> do !appl_18 <- kl_Parse_shen_LBclausesMultRB `pseq` hd kl_Parse_shen_LBclausesMultRB
                                                                                                                                                                                                                                                                        !appl_19 <- kl_Parse_shen_LBclauseMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBclauseMultRB
                                                                                                                                                                                                                                                                        !appl_20 <- kl_Parse_shen_LBclausesMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBclausesMultRB
                                                                                                                                                                                                                                                                        !appl_21 <- appl_19 `pseq` (appl_20 `pseq` klCons appl_19 appl_20)
                                                                                                                                                                                                                                                                        appl_18 `pseq` (appl_21 `pseq` kl_shen_pair appl_18 appl_21)
                                                                                                                                                                                                                                                  Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean")))
                                                                                                                                                        !appl_22 <- kl_Parse_shen_LBclauseMultRB `pseq` kl_shen_LBclausesMultRB kl_Parse_shen_LBclauseMultRB
                                                                                                                                                        appl_22 `pseq` applyWrapper appl_14 [appl_22]
                                                                                                                                  Atom (B (False)) -> do do kl_fail
                                                                                                                                  _ -> throwError "if: expected boolean")))
                                         !appl_23 <- kl_V1646 `pseq` kl_shen_LBclauseMultRB kl_V1646
                                         !appl_24 <- appl_23 `pseq` applyWrapper appl_10 [appl_23]
                                         appl_24 `pseq` applyWrapper appl_0 [appl_24]

kl_shen_LBclauseMultRB :: Core.Types.KLValue ->
                          Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBclauseMultRB (!kl_V1648) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBheadMultRB) -> do !appl_1 <- kl_fail
                                                                                                                          !appl_2 <- appl_1 `pseq` (kl_Parse_shen_LBheadMultRB `pseq` eq appl_1 kl_Parse_shen_LBheadMultRB)
                                                                                                                          !kl_if_3 <- appl_2 `pseq` kl_not appl_2
                                                                                                                          case kl_if_3 of
                                                                                                                              Atom (B (True)) -> do !appl_4 <- kl_Parse_shen_LBheadMultRB `pseq` hd kl_Parse_shen_LBheadMultRB
                                                                                                                                                    !kl_if_5 <- appl_4 `pseq` consP appl_4
                                                                                                                                                    !kl_if_6 <- case kl_if_5 of
                                                                                                                                                                    Atom (B (True)) -> do !appl_7 <- kl_Parse_shen_LBheadMultRB `pseq` hd kl_Parse_shen_LBheadMultRB
                                                                                                                                                                                          !appl_8 <- appl_7 `pseq` hd appl_7
                                                                                                                                                                                          !kl_if_9 <- appl_8 `pseq` eq (Core.Types.Atom (Core.Types.UnboundSym "<--")) appl_8
                                                                                                                                                                                          case kl_if_9 of
                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                    case kl_if_6 of
                                                                                                                                                        Atom (B (True)) -> do let !appl_10 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBbodyMultRB) -> do !appl_11 <- kl_fail
                                                                                                                                                                                                                                                                 !appl_12 <- appl_11 `pseq` (kl_Parse_shen_LBbodyMultRB `pseq` eq appl_11 kl_Parse_shen_LBbodyMultRB)
                                                                                                                                                                                                                                                                 !kl_if_13 <- appl_12 `pseq` kl_not appl_12
                                                                                                                                                                                                                                                                 case kl_if_13 of
                                                                                                                                                                                                                                                                     Atom (B (True)) -> do let !appl_14 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBendMultRB) -> do !appl_15 <- kl_fail
                                                                                                                                                                                                                                                                                                                                                                             !appl_16 <- appl_15 `pseq` (kl_Parse_shen_LBendMultRB `pseq` eq appl_15 kl_Parse_shen_LBendMultRB)
                                                                                                                                                                                                                                                                                                                                                                             !kl_if_17 <- appl_16 `pseq` kl_not appl_16
                                                                                                                                                                                                                                                                                                                                                                             case kl_if_17 of
                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do !appl_18 <- kl_Parse_shen_LBendMultRB `pseq` hd kl_Parse_shen_LBendMultRB
                                                                                                                                                                                                                                                                                                                                                                                                       !appl_19 <- kl_Parse_shen_LBheadMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBheadMultRB
                                                                                                                                                                                                                                                                                                                                                                                                       !appl_20 <- kl_Parse_shen_LBbodyMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBbodyMultRB
                                                                                                                                                                                                                                                                                                                                                                                                       let !appl_21 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                       !appl_22 <- appl_20 `pseq` (appl_21 `pseq` klCons appl_20 appl_21)
                                                                                                                                                                                                                                                                                                                                                                                                       !appl_23 <- appl_19 `pseq` (appl_22 `pseq` klCons appl_19 appl_22)
                                                                                                                                                                                                                                                                                                                                                                                                       appl_18 `pseq` (appl_23 `pseq` kl_shen_pair appl_18 appl_23)
                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean")))
                                                                                                                                                                                                                                                                                           !appl_24 <- kl_Parse_shen_LBbodyMultRB `pseq` kl_shen_LBendMultRB kl_Parse_shen_LBbodyMultRB
                                                                                                                                                                                                                                                                                           appl_24 `pseq` applyWrapper appl_14 [appl_24]
                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean")))
                                                                                                                                                                              !appl_25 <- kl_Parse_shen_LBheadMultRB `pseq` hd kl_Parse_shen_LBheadMultRB
                                                                                                                                                                              !appl_26 <- appl_25 `pseq` tl appl_25
                                                                                                                                                                              !appl_27 <- kl_Parse_shen_LBheadMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBheadMultRB
                                                                                                                                                                              !appl_28 <- appl_26 `pseq` (appl_27 `pseq` kl_shen_pair appl_26 appl_27)
                                                                                                                                                                              !appl_29 <- appl_28 `pseq` kl_shen_LBbodyMultRB appl_28
                                                                                                                                                                              appl_29 `pseq` applyWrapper appl_10 [appl_29]
                                                                                                                                                        Atom (B (False)) -> do do kl_fail
                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                              Atom (B (False)) -> do do kl_fail
                                                                                                                              _ -> throwError "if: expected boolean")))
                                        !appl_30 <- kl_V1648 `pseq` kl_shen_LBheadMultRB kl_V1648
                                        appl_30 `pseq` applyWrapper appl_0 [appl_30]

kl_shen_LBheadMultRB :: Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBheadMultRB (!kl_V1650) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_YaccParse) -> do !appl_1 <- kl_fail
                                                                                                          !kl_if_2 <- kl_YaccParse `pseq` (appl_1 `pseq` eq kl_YaccParse appl_1)
                                                                                                          case kl_if_2 of
                                                                                                              Atom (B (True)) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Parse_LBeRB) -> do !appl_4 <- kl_fail
                                                                                                                                                                                                          !appl_5 <- appl_4 `pseq` (kl_Parse_LBeRB `pseq` eq appl_4 kl_Parse_LBeRB)
                                                                                                                                                                                                          !kl_if_6 <- appl_5 `pseq` kl_not appl_5
                                                                                                                                                                                                          case kl_if_6 of
                                                                                                                                                                                                              Atom (B (True)) -> do !appl_7 <- kl_Parse_LBeRB `pseq` hd kl_Parse_LBeRB
                                                                                                                                                                                                                                    let !appl_8 = Atom Nil
                                                                                                                                                                                                                                    appl_7 `pseq` (appl_8 `pseq` kl_shen_pair appl_7 appl_8)
                                                                                                                                                                                                              Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                              _ -> throwError "if: expected boolean")))
                                                                                                                                    !appl_9 <- kl_V1650 `pseq` kl_LBeRB kl_V1650
                                                                                                                                    appl_9 `pseq` applyWrapper appl_3 [appl_9]
                                                                                                              Atom (B (False)) -> do do return kl_YaccParse
                                                                                                              _ -> throwError "if: expected boolean")))
                                      let !appl_10 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBtermMultRB) -> do !appl_11 <- kl_fail
                                                                                                                         !appl_12 <- appl_11 `pseq` (kl_Parse_shen_LBtermMultRB `pseq` eq appl_11 kl_Parse_shen_LBtermMultRB)
                                                                                                                         !kl_if_13 <- appl_12 `pseq` kl_not appl_12
                                                                                                                         case kl_if_13 of
                                                                                                                             Atom (B (True)) -> do let !appl_14 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBheadMultRB) -> do !appl_15 <- kl_fail
                                                                                                                                                                                                                                      !appl_16 <- appl_15 `pseq` (kl_Parse_shen_LBheadMultRB `pseq` eq appl_15 kl_Parse_shen_LBheadMultRB)
                                                                                                                                                                                                                                      !kl_if_17 <- appl_16 `pseq` kl_not appl_16
                                                                                                                                                                                                                                      case kl_if_17 of
                                                                                                                                                                                                                                          Atom (B (True)) -> do !appl_18 <- kl_Parse_shen_LBheadMultRB `pseq` hd kl_Parse_shen_LBheadMultRB
                                                                                                                                                                                                                                                                !appl_19 <- kl_Parse_shen_LBtermMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBtermMultRB
                                                                                                                                                                                                                                                                !appl_20 <- kl_Parse_shen_LBheadMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBheadMultRB
                                                                                                                                                                                                                                                                !appl_21 <- appl_19 `pseq` (appl_20 `pseq` klCons appl_19 appl_20)
                                                                                                                                                                                                                                                                appl_18 `pseq` (appl_21 `pseq` kl_shen_pair appl_18 appl_21)
                                                                                                                                                                                                                                          Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean")))
                                                                                                                                                   !appl_22 <- kl_Parse_shen_LBtermMultRB `pseq` kl_shen_LBheadMultRB kl_Parse_shen_LBtermMultRB
                                                                                                                                                   appl_22 `pseq` applyWrapper appl_14 [appl_22]
                                                                                                                             Atom (B (False)) -> do do kl_fail
                                                                                                                             _ -> throwError "if: expected boolean")))
                                      !appl_23 <- kl_V1650 `pseq` kl_shen_LBtermMultRB kl_V1650
                                      !appl_24 <- appl_23 `pseq` applyWrapper appl_10 [appl_23]
                                      appl_24 `pseq` applyWrapper appl_0 [appl_24]

kl_shen_LBtermMultRB :: Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBtermMultRB (!kl_V1652) = do !appl_0 <- kl_V1652 `pseq` hd kl_V1652
                                      !kl_if_1 <- appl_0 `pseq` consP appl_0
                                      case kl_if_1 of
                                          Atom (B (True)) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Parse_X) -> do !appl_3 <- kl_Parse_X `pseq` eq (Core.Types.Atom (Core.Types.UnboundSym "<--")) kl_Parse_X
                                                                                                                                  !kl_if_4 <- appl_3 `pseq` kl_not appl_3
                                                                                                                                  !kl_if_5 <- case kl_if_4 of
                                                                                                                                                  Atom (B (True)) -> do !kl_if_6 <- kl_Parse_X `pseq` kl_shen_legitimate_termP kl_Parse_X
                                                                                                                                                                        case kl_if_6 of
                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                  case kl_if_5 of
                                                                                                                                      Atom (B (True)) -> do !appl_7 <- kl_V1652 `pseq` hd kl_V1652
                                                                                                                                                            !appl_8 <- appl_7 `pseq` tl appl_7
                                                                                                                                                            !appl_9 <- kl_V1652 `pseq` kl_shen_hdtl kl_V1652
                                                                                                                                                            !appl_10 <- appl_8 `pseq` (appl_9 `pseq` kl_shen_pair appl_8 appl_9)
                                                                                                                                                            !appl_11 <- appl_10 `pseq` hd appl_10
                                                                                                                                                            !appl_12 <- kl_Parse_X `pseq` kl_shen_eval_cons kl_Parse_X
                                                                                                                                                            appl_11 `pseq` (appl_12 `pseq` kl_shen_pair appl_11 appl_12)
                                                                                                                                      Atom (B (False)) -> do do kl_fail
                                                                                                                                      _ -> throwError "if: expected boolean")))
                                                                !appl_13 <- kl_V1652 `pseq` hd kl_V1652
                                                                !appl_14 <- appl_13 `pseq` hd appl_13
                                                                appl_14 `pseq` applyWrapper appl_2 [appl_14]
                                          Atom (B (False)) -> do do kl_fail
                                          _ -> throwError "if: expected boolean"

kl_shen_legitimate_termP :: Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_legitimate_termP (!kl_V1658) = do !kl_if_0 <- let pat_cond_1 kl_V1658 kl_V1658h kl_V1658t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1658t kl_V1658th kl_V1658tt = do !kl_if_6 <- let pat_cond_7 kl_V1658tt kl_V1658tth kl_V1658ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                          !kl_if_9 <- appl_8 `pseq` (kl_V1658ttt `pseq` eq appl_8 kl_V1658ttt)
                                                                                                                                                                                                                                                                          case kl_if_9 of
                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                       pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                                    in case kl_V1658tt of
                                                                                                                                                                                                                           !(kl_V1658tt@(Cons (!kl_V1658tth)
                                                                                                                                                                                                                                              (!kl_V1658ttt))) -> pat_cond_7 kl_V1658tt kl_V1658tth kl_V1658ttt
                                                                                                                                                                                                                           _ -> pat_cond_10
                                                                                                                                                                                                       case kl_if_6 of
                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                       pat_cond_11 = do do return (Atom (B False))
                                                                                                                                                    in case kl_V1658t of
                                                                                                                                                           !(kl_V1658t@(Cons (!kl_V1658th)
                                                                                                                                                                             (!kl_V1658tt))) -> pat_cond_5 kl_V1658t kl_V1658th kl_V1658tt
                                                                                                                                                           _ -> pat_cond_11
                                                                                                                                       case kl_if_4 of
                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                       pat_cond_12 = do do return (Atom (B False))
                                                                                                                    in case kl_V1658h of
                                                                                                                           kl_V1658h@(Atom (UnboundSym "cons")) -> pat_cond_3
                                                                                                                           kl_V1658h@(ApplC (PL "cons"
                                                                                                                                                _)) -> pat_cond_3
                                                                                                                           kl_V1658h@(ApplC (Func "cons"
                                                                                                                                                  _)) -> pat_cond_3
                                                                                                                           _ -> pat_cond_12
                                                                                                       case kl_if_2 of
                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                           _ -> throwError "if: expected boolean"
                                                          pat_cond_13 = do do return (Atom (B False))
                                                       in case kl_V1658 of
                                                              !(kl_V1658@(Cons (!kl_V1658h)
                                                                               (!kl_V1658t))) -> pat_cond_1 kl_V1658 kl_V1658h kl_V1658t
                                                              _ -> pat_cond_13
                                          case kl_if_0 of
                                              Atom (B (True)) -> do !appl_14 <- kl_V1658 `pseq` tl kl_V1658
                                                                    !appl_15 <- appl_14 `pseq` hd appl_14
                                                                    !kl_if_16 <- appl_15 `pseq` kl_shen_legitimate_termP appl_15
                                                                    case kl_if_16 of
                                                                        Atom (B (True)) -> do !appl_17 <- kl_V1658 `pseq` tl kl_V1658
                                                                                              !appl_18 <- appl_17 `pseq` tl appl_17
                                                                                              !appl_19 <- appl_18 `pseq` hd appl_18
                                                                                              !kl_if_20 <- appl_19 `pseq` kl_shen_legitimate_termP appl_19
                                                                                              case kl_if_20 of
                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                  _ -> throwError "if: expected boolean"
                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                        _ -> throwError "if: expected boolean"
                                              Atom (B (False)) -> do !kl_if_21 <- let pat_cond_22 kl_V1658 kl_V1658h kl_V1658t = do !kl_if_23 <- let pat_cond_24 = do !kl_if_25 <- let pat_cond_26 kl_V1658t kl_V1658th kl_V1658tt = do !kl_if_27 <- let pat_cond_28 kl_V1658tt kl_V1658tth kl_V1658ttt = do !kl_if_29 <- let pat_cond_30 = do let !appl_31 = Atom Nil
                                                                                                                                                                                                                                                                                                                                               !kl_if_32 <- appl_31 `pseq` (kl_V1658ttt `pseq` eq appl_31 kl_V1658ttt)
                                                                                                                                                                                                                                                                                                                                               case kl_if_32 of
                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                              pat_cond_33 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                           in case kl_V1658tth of
                                                                                                                                                                                                                                                                                                                                  kl_V1658tth@(Atom (UnboundSym "+")) -> pat_cond_30
                                                                                                                                                                                                                                                                                                                                  kl_V1658tth@(ApplC (PL "+"
                                                                                                                                                                                                                                                                                                                                                         _)) -> pat_cond_30
                                                                                                                                                                                                                                                                                                                                  kl_V1658tth@(ApplC (Func "+"
                                                                                                                                                                                                                                                                                                                                                           _)) -> pat_cond_30
                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_33
                                                                                                                                                                                                                                                                                                             case kl_if_29 of
                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                         pat_cond_34 = do do return (Atom (B False))
                                                                                                                                                                                                                                                      in case kl_V1658tt of
                                                                                                                                                                                                                                                             !(kl_V1658tt@(Cons (!kl_V1658tth)
                                                                                                                                                                                                                                                                                (!kl_V1658ttt))) -> pat_cond_28 kl_V1658tt kl_V1658tth kl_V1658ttt
                                                                                                                                                                                                                                                             _ -> pat_cond_34
                                                                                                                                                                                                                                        case kl_if_27 of
                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                       pat_cond_35 = do do return (Atom (B False))
                                                                                                                                                                                    in case kl_V1658t of
                                                                                                                                                                                           !(kl_V1658t@(Cons (!kl_V1658th)
                                                                                                                                                                                                             (!kl_V1658tt))) -> pat_cond_26 kl_V1658t kl_V1658th kl_V1658tt
                                                                                                                                                                                           _ -> pat_cond_35
                                                                                                                                                                      case kl_if_25 of
                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                     pat_cond_36 = do do return (Atom (B False))
                                                                                                                                                  in case kl_V1658h of
                                                                                                                                                         kl_V1658h@(Atom (UnboundSym "mode")) -> pat_cond_24
                                                                                                                                                         kl_V1658h@(ApplC (PL "mode"
                                                                                                                                                                              _)) -> pat_cond_24
                                                                                                                                                         kl_V1658h@(ApplC (Func "mode"
                                                                                                                                                                                _)) -> pat_cond_24
                                                                                                                                                         _ -> pat_cond_36
                                                                                                                                    case kl_if_23 of
                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                      pat_cond_37 = do do return (Atom (B False))
                                                                                   in case kl_V1658 of
                                                                                          !(kl_V1658@(Cons (!kl_V1658h)
                                                                                                           (!kl_V1658t))) -> pat_cond_22 kl_V1658 kl_V1658h kl_V1658t
                                                                                          _ -> pat_cond_37
                                                                     case kl_if_21 of
                                                                         Atom (B (True)) -> do !appl_38 <- kl_V1658 `pseq` tl kl_V1658
                                                                                               !appl_39 <- appl_38 `pseq` hd appl_38
                                                                                               appl_39 `pseq` kl_shen_legitimate_termP appl_39
                                                                         Atom (B (False)) -> do !kl_if_40 <- let pat_cond_41 kl_V1658 kl_V1658h kl_V1658t = do !kl_if_42 <- let pat_cond_43 = do !kl_if_44 <- let pat_cond_45 kl_V1658t kl_V1658th kl_V1658tt = do !kl_if_46 <- let pat_cond_47 kl_V1658tt kl_V1658tth kl_V1658ttt = do !kl_if_48 <- let pat_cond_49 = do let !appl_50 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                          !kl_if_51 <- appl_50 `pseq` (kl_V1658ttt `pseq` eq appl_50 kl_V1658ttt)
                                                                                                                                                                                                                                                                                                                                                                          case kl_if_51 of
                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                         pat_cond_52 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                      in case kl_V1658tth of
                                                                                                                                                                                                                                                                                                                                                             kl_V1658tth@(Atom (UnboundSym "-")) -> pat_cond_49
                                                                                                                                                                                                                                                                                                                                                             kl_V1658tth@(ApplC (PL "-"
                                                                                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_49
                                                                                                                                                                                                                                                                                                                                                             kl_V1658tth@(ApplC (Func "-"
                                                                                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_49
                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_52
                                                                                                                                                                                                                                                                                                                                        case kl_if_48 of
                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                    pat_cond_53 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                 in case kl_V1658tt of
                                                                                                                                                                                                                                                                                        !(kl_V1658tt@(Cons (!kl_V1658tth)
                                                                                                                                                                                                                                                                                                           (!kl_V1658ttt))) -> pat_cond_47 kl_V1658tt kl_V1658tth kl_V1658ttt
                                                                                                                                                                                                                                                                                        _ -> pat_cond_53
                                                                                                                                                                                                                                                                   case kl_if_46 of
                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                  pat_cond_54 = do do return (Atom (B False))
                                                                                                                                                                                                               in case kl_V1658t of
                                                                                                                                                                                                                      !(kl_V1658t@(Cons (!kl_V1658th)
                                                                                                                                                                                                                                        (!kl_V1658tt))) -> pat_cond_45 kl_V1658t kl_V1658th kl_V1658tt
                                                                                                                                                                                                                      _ -> pat_cond_54
                                                                                                                                                                                                 case kl_if_44 of
                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                pat_cond_55 = do do return (Atom (B False))
                                                                                                                                                                             in case kl_V1658h of
                                                                                                                                                                                    kl_V1658h@(Atom (UnboundSym "mode")) -> pat_cond_43
                                                                                                                                                                                    kl_V1658h@(ApplC (PL "mode"
                                                                                                                                                                                                         _)) -> pat_cond_43
                                                                                                                                                                                    kl_V1658h@(ApplC (Func "mode"
                                                                                                                                                                                                           _)) -> pat_cond_43
                                                                                                                                                                                    _ -> pat_cond_55
                                                                                                                                                               case kl_if_42 of
                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                 pat_cond_56 = do do return (Atom (B False))
                                                                                                              in case kl_V1658 of
                                                                                                                     !(kl_V1658@(Cons (!kl_V1658h)
                                                                                                                                      (!kl_V1658t))) -> pat_cond_41 kl_V1658 kl_V1658h kl_V1658t
                                                                                                                     _ -> pat_cond_56
                                                                                                case kl_if_40 of
                                                                                                    Atom (B (True)) -> do !appl_57 <- kl_V1658 `pseq` tl kl_V1658
                                                                                                                          !appl_58 <- appl_57 `pseq` hd appl_57
                                                                                                                          appl_58 `pseq` kl_shen_legitimate_termP appl_58
                                                                                                    Atom (B (False)) -> do let pat_cond_59 kl_V1658 kl_V1658h kl_V1658t = do return (Atom (B False))
                                                                                                                               pat_cond_60 = do do return (Atom (B True))
                                                                                                                            in case kl_V1658 of
                                                                                                                                   !(kl_V1658@(Cons (!kl_V1658h)
                                                                                                                                                    (!kl_V1658t))) -> pat_cond_59 kl_V1658 kl_V1658h kl_V1658t
                                                                                                                                   _ -> pat_cond_60
                                                                                                    _ -> throwError "if: expected boolean"
                                                                         _ -> throwError "if: expected boolean"
                                              _ -> throwError "if: expected boolean"

kl_shen_eval_cons :: Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_eval_cons (!kl_V1660) = do !kl_if_0 <- let pat_cond_1 kl_V1660 kl_V1660h kl_V1660t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1660t kl_V1660th kl_V1660tt = do !kl_if_6 <- let pat_cond_7 kl_V1660tt kl_V1660tth kl_V1660ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                   !kl_if_9 <- appl_8 `pseq` (kl_V1660ttt `pseq` eq appl_8 kl_V1660ttt)
                                                                                                                                                                                                                                                                   case kl_if_9 of
                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                             in case kl_V1660tt of
                                                                                                                                                                                                                    !(kl_V1660tt@(Cons (!kl_V1660tth)
                                                                                                                                                                                                                                       (!kl_V1660ttt))) -> pat_cond_7 kl_V1660tt kl_V1660tth kl_V1660ttt
                                                                                                                                                                                                                    _ -> pat_cond_10
                                                                                                                                                                                                case kl_if_6 of
                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                pat_cond_11 = do do return (Atom (B False))
                                                                                                                                             in case kl_V1660t of
                                                                                                                                                    !(kl_V1660t@(Cons (!kl_V1660th)
                                                                                                                                                                      (!kl_V1660tt))) -> pat_cond_5 kl_V1660t kl_V1660th kl_V1660tt
                                                                                                                                                    _ -> pat_cond_11
                                                                                                                                case kl_if_4 of
                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                pat_cond_12 = do do return (Atom (B False))
                                                                                                             in case kl_V1660h of
                                                                                                                    kl_V1660h@(Atom (UnboundSym "cons")) -> pat_cond_3
                                                                                                                    kl_V1660h@(ApplC (PL "cons"
                                                                                                                                         _)) -> pat_cond_3
                                                                                                                    kl_V1660h@(ApplC (Func "cons"
                                                                                                                                           _)) -> pat_cond_3
                                                                                                                    _ -> pat_cond_12
                                                                                                case kl_if_2 of
                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                    _ -> throwError "if: expected boolean"
                                                   pat_cond_13 = do do return (Atom (B False))
                                                in case kl_V1660 of
                                                       !(kl_V1660@(Cons (!kl_V1660h)
                                                                        (!kl_V1660t))) -> pat_cond_1 kl_V1660 kl_V1660h kl_V1660t
                                                       _ -> pat_cond_13
                                   case kl_if_0 of
                                       Atom (B (True)) -> do !appl_14 <- kl_V1660 `pseq` tl kl_V1660
                                                             !appl_15 <- appl_14 `pseq` hd appl_14
                                                             !appl_16 <- appl_15 `pseq` kl_shen_eval_cons appl_15
                                                             !appl_17 <- kl_V1660 `pseq` tl kl_V1660
                                                             !appl_18 <- appl_17 `pseq` tl appl_17
                                                             !appl_19 <- appl_18 `pseq` hd appl_18
                                                             !appl_20 <- appl_19 `pseq` kl_shen_eval_cons appl_19
                                                             appl_16 `pseq` (appl_20 `pseq` klCons appl_16 appl_20)
                                       Atom (B (False)) -> do !kl_if_21 <- let pat_cond_22 kl_V1660 kl_V1660h kl_V1660t = do !kl_if_23 <- let pat_cond_24 = do !kl_if_25 <- let pat_cond_26 kl_V1660t kl_V1660th kl_V1660tt = do !kl_if_27 <- let pat_cond_28 kl_V1660tt kl_V1660tth kl_V1660ttt = do let !appl_29 = Atom Nil
                                                                                                                                                                                                                                                                                                      !kl_if_30 <- appl_29 `pseq` (kl_V1660ttt `pseq` eq appl_29 kl_V1660ttt)
                                                                                                                                                                                                                                                                                                      case kl_if_30 of
                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                  pat_cond_31 = do do return (Atom (B False))
                                                                                                                                                                                                                                               in case kl_V1660tt of
                                                                                                                                                                                                                                                      !(kl_V1660tt@(Cons (!kl_V1660tth)
                                                                                                                                                                                                                                                                         (!kl_V1660ttt))) -> pat_cond_28 kl_V1660tt kl_V1660tth kl_V1660ttt
                                                                                                                                                                                                                                                      _ -> pat_cond_31
                                                                                                                                                                                                                                 case kl_if_27 of
                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                pat_cond_32 = do do return (Atom (B False))
                                                                                                                                                                             in case kl_V1660t of
                                                                                                                                                                                    !(kl_V1660t@(Cons (!kl_V1660th)
                                                                                                                                                                                                      (!kl_V1660tt))) -> pat_cond_26 kl_V1660t kl_V1660th kl_V1660tt
                                                                                                                                                                                    _ -> pat_cond_32
                                                                                                                                                               case kl_if_25 of
                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                              pat_cond_33 = do do return (Atom (B False))
                                                                                                                                           in case kl_V1660h of
                                                                                                                                                  kl_V1660h@(Atom (UnboundSym "mode")) -> pat_cond_24
                                                                                                                                                  kl_V1660h@(ApplC (PL "mode"
                                                                                                                                                                       _)) -> pat_cond_24
                                                                                                                                                  kl_V1660h@(ApplC (Func "mode"
                                                                                                                                                                         _)) -> pat_cond_24
                                                                                                                                                  _ -> pat_cond_33
                                                                                                                             case kl_if_23 of
                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                               pat_cond_34 = do do return (Atom (B False))
                                                                            in case kl_V1660 of
                                                                                   !(kl_V1660@(Cons (!kl_V1660h)
                                                                                                    (!kl_V1660t))) -> pat_cond_22 kl_V1660 kl_V1660h kl_V1660t
                                                                                   _ -> pat_cond_34
                                                              case kl_if_21 of
                                                                  Atom (B (True)) -> do !appl_35 <- kl_V1660 `pseq` tl kl_V1660
                                                                                        !appl_36 <- appl_35 `pseq` hd appl_35
                                                                                        !appl_37 <- appl_36 `pseq` kl_shen_eval_cons appl_36
                                                                                        !appl_38 <- kl_V1660 `pseq` tl kl_V1660
                                                                                        !appl_39 <- appl_38 `pseq` tl appl_38
                                                                                        !appl_40 <- appl_37 `pseq` (appl_39 `pseq` klCons appl_37 appl_39)
                                                                                        appl_40 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_40
                                                                  Atom (B (False)) -> do do return kl_V1660
                                                                  _ -> throwError "if: expected boolean"
                                       _ -> throwError "if: expected boolean"

kl_shen_LBbodyMultRB :: Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBbodyMultRB (!kl_V1662) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_YaccParse) -> do !appl_1 <- kl_fail
                                                                                                          !kl_if_2 <- kl_YaccParse `pseq` (appl_1 `pseq` eq kl_YaccParse appl_1)
                                                                                                          case kl_if_2 of
                                                                                                              Atom (B (True)) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Parse_LBeRB) -> do !appl_4 <- kl_fail
                                                                                                                                                                                                          !appl_5 <- appl_4 `pseq` (kl_Parse_LBeRB `pseq` eq appl_4 kl_Parse_LBeRB)
                                                                                                                                                                                                          !kl_if_6 <- appl_5 `pseq` kl_not appl_5
                                                                                                                                                                                                          case kl_if_6 of
                                                                                                                                                                                                              Atom (B (True)) -> do !appl_7 <- kl_Parse_LBeRB `pseq` hd kl_Parse_LBeRB
                                                                                                                                                                                                                                    let !appl_8 = Atom Nil
                                                                                                                                                                                                                                    appl_7 `pseq` (appl_8 `pseq` kl_shen_pair appl_7 appl_8)
                                                                                                                                                                                                              Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                              _ -> throwError "if: expected boolean")))
                                                                                                                                    !appl_9 <- kl_V1662 `pseq` kl_LBeRB kl_V1662
                                                                                                                                    appl_9 `pseq` applyWrapper appl_3 [appl_9]
                                                                                                              Atom (B (False)) -> do do return kl_YaccParse
                                                                                                              _ -> throwError "if: expected boolean")))
                                      let !appl_10 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBliteralMultRB) -> do !appl_11 <- kl_fail
                                                                                                                            !appl_12 <- appl_11 `pseq` (kl_Parse_shen_LBliteralMultRB `pseq` eq appl_11 kl_Parse_shen_LBliteralMultRB)
                                                                                                                            !kl_if_13 <- appl_12 `pseq` kl_not appl_12
                                                                                                                            case kl_if_13 of
                                                                                                                                Atom (B (True)) -> do let !appl_14 = ApplC (Func "lambda" (Context (\(!kl_Parse_shen_LBbodyMultRB) -> do !appl_15 <- kl_fail
                                                                                                                                                                                                                                         !appl_16 <- appl_15 `pseq` (kl_Parse_shen_LBbodyMultRB `pseq` eq appl_15 kl_Parse_shen_LBbodyMultRB)
                                                                                                                                                                                                                                         !kl_if_17 <- appl_16 `pseq` kl_not appl_16
                                                                                                                                                                                                                                         case kl_if_17 of
                                                                                                                                                                                                                                             Atom (B (True)) -> do !appl_18 <- kl_Parse_shen_LBbodyMultRB `pseq` hd kl_Parse_shen_LBbodyMultRB
                                                                                                                                                                                                                                                                   !appl_19 <- kl_Parse_shen_LBliteralMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBliteralMultRB
                                                                                                                                                                                                                                                                   !appl_20 <- kl_Parse_shen_LBbodyMultRB `pseq` kl_shen_hdtl kl_Parse_shen_LBbodyMultRB
                                                                                                                                                                                                                                                                   !appl_21 <- appl_19 `pseq` (appl_20 `pseq` klCons appl_19 appl_20)
                                                                                                                                                                                                                                                                   appl_18 `pseq` (appl_21 `pseq` kl_shen_pair appl_18 appl_21)
                                                                                                                                                                                                                                             Atom (B (False)) -> do do kl_fail
                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean")))
                                                                                                                                                      !appl_22 <- kl_Parse_shen_LBliteralMultRB `pseq` kl_shen_LBbodyMultRB kl_Parse_shen_LBliteralMultRB
                                                                                                                                                      appl_22 `pseq` applyWrapper appl_14 [appl_22]
                                                                                                                                Atom (B (False)) -> do do kl_fail
                                                                                                                                _ -> throwError "if: expected boolean")))
                                      !appl_23 <- kl_V1662 `pseq` kl_shen_LBliteralMultRB kl_V1662
                                      !appl_24 <- appl_23 `pseq` applyWrapper appl_10 [appl_23]
                                      appl_24 `pseq` applyWrapper appl_0 [appl_24]

kl_shen_LBliteralMultRB :: Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBliteralMultRB (!kl_V1664) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_YaccParse) -> do !appl_1 <- kl_fail
                                                                                                             !kl_if_2 <- kl_YaccParse `pseq` (appl_1 `pseq` eq kl_YaccParse appl_1)
                                                                                                             case kl_if_2 of
                                                                                                                 Atom (B (True)) -> do !appl_3 <- kl_V1664 `pseq` hd kl_V1664
                                                                                                                                       !kl_if_4 <- appl_3 `pseq` consP appl_3
                                                                                                                                       case kl_if_4 of
                                                                                                                                           Atom (B (True)) -> do let !appl_5 = ApplC (Func "lambda" (Context (\(!kl_Parse_X) -> do let pat_cond_6 kl_Parse_X kl_Parse_Xh kl_Parse_Xt = do !appl_7 <- kl_V1664 `pseq` hd kl_V1664
                                                                                                                                                                                                                                                                                          !appl_8 <- appl_7 `pseq` tl appl_7
                                                                                                                                                                                                                                                                                          !appl_9 <- kl_V1664 `pseq` kl_shen_hdtl kl_V1664
                                                                                                                                                                                                                                                                                          !appl_10 <- appl_8 `pseq` (appl_9 `pseq` kl_shen_pair appl_8 appl_9)
                                                                                                                                                                                                                                                                                          !appl_11 <- appl_10 `pseq` hd appl_10
                                                                                                                                                                                                                                                                                          appl_11 `pseq` (kl_Parse_X `pseq` kl_shen_pair appl_11 kl_Parse_X)
                                                                                                                                                                                                                                       pat_cond_12 = do do kl_fail
                                                                                                                                                                                                                                    in case kl_Parse_X of
                                                                                                                                                                                                                                           !(kl_Parse_X@(Cons (!kl_Parse_Xh)
                                                                                                                                                                                                                                                              (!kl_Parse_Xt))) -> pat_cond_6 kl_Parse_X kl_Parse_Xh kl_Parse_Xt
                                                                                                                                                                                                                                           _ -> pat_cond_12)))
                                                                                                                                                                 !appl_13 <- kl_V1664 `pseq` hd kl_V1664
                                                                                                                                                                 !appl_14 <- appl_13 `pseq` hd appl_13
                                                                                                                                                                 appl_14 `pseq` applyWrapper appl_5 [appl_14]
                                                                                                                                           Atom (B (False)) -> do do kl_fail
                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                 Atom (B (False)) -> do do return kl_YaccParse
                                                                                                                 _ -> throwError "if: expected boolean")))
                                         !appl_15 <- kl_V1664 `pseq` hd kl_V1664
                                         !kl_if_16 <- appl_15 `pseq` consP appl_15
                                         !kl_if_17 <- case kl_if_16 of
                                                          Atom (B (True)) -> do !appl_18 <- kl_V1664 `pseq` hd kl_V1664
                                                                                !appl_19 <- appl_18 `pseq` hd appl_18
                                                                                !kl_if_20 <- appl_19 `pseq` eq (Core.Types.Atom (Core.Types.UnboundSym "!")) appl_19
                                                                                case kl_if_20 of
                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                    _ -> throwError "if: expected boolean"
                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                          _ -> throwError "if: expected boolean"
                                         !appl_21 <- case kl_if_17 of
                                                         Atom (B (True)) -> do !appl_22 <- kl_V1664 `pseq` hd kl_V1664
                                                                               !appl_23 <- appl_22 `pseq` tl appl_22
                                                                               !appl_24 <- kl_V1664 `pseq` kl_shen_hdtl kl_V1664
                                                                               !appl_25 <- appl_23 `pseq` (appl_24 `pseq` kl_shen_pair appl_23 appl_24)
                                                                               !appl_26 <- appl_25 `pseq` hd appl_25
                                                                               !appl_27 <- intern (Core.Types.Atom (Core.Types.Str "Throwcontrol"))
                                                                               let !appl_28 = Atom Nil
                                                                               !appl_29 <- appl_27 `pseq` (appl_28 `pseq` klCons appl_27 appl_28)
                                                                               !appl_30 <- appl_29 `pseq` klCons (ApplC (wrapNamed "cut" kl_cut)) appl_29
                                                                               appl_26 `pseq` (appl_30 `pseq` kl_shen_pair appl_26 appl_30)
                                                         Atom (B (False)) -> do do kl_fail
                                                         _ -> throwError "if: expected boolean"
                                         appl_21 `pseq` applyWrapper appl_0 [appl_21]

kl_shen_LBendMultRB :: Core.Types.KLValue ->
                       Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_LBendMultRB (!kl_V1666) = do !appl_0 <- kl_V1666 `pseq` hd kl_V1666
                                     !kl_if_1 <- appl_0 `pseq` consP appl_0
                                     case kl_if_1 of
                                         Atom (B (True)) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Parse_X) -> do let pat_cond_3 = do !appl_4 <- kl_V1666 `pseq` hd kl_V1666
                                                                                                                                                     !appl_5 <- appl_4 `pseq` tl appl_4
                                                                                                                                                     !appl_6 <- kl_V1666 `pseq` kl_shen_hdtl kl_V1666
                                                                                                                                                     !appl_7 <- appl_5 `pseq` (appl_6 `pseq` kl_shen_pair appl_5 appl_6)
                                                                                                                                                     !appl_8 <- appl_7 `pseq` hd appl_7
                                                                                                                                                     appl_8 `pseq` (kl_Parse_X `pseq` kl_shen_pair appl_8 kl_Parse_X)
                                                                                                                                     pat_cond_9 = do do kl_fail
                                                                                                                                  in case kl_Parse_X of
                                                                                                                                         kl_Parse_X@(Atom (UnboundSym ";")) -> pat_cond_3
                                                                                                                                         kl_Parse_X@(ApplC (PL ";"
                                                                                                                                                               _)) -> pat_cond_3
                                                                                                                                         kl_Parse_X@(ApplC (Func ";"
                                                                                                                                                                 _)) -> pat_cond_3
                                                                                                                                         _ -> pat_cond_9)))
                                                               !appl_10 <- kl_V1666 `pseq` hd kl_V1666
                                                               !appl_11 <- appl_10 `pseq` hd appl_10
                                                               appl_11 `pseq` applyWrapper appl_2 [appl_11]
                                         Atom (B (False)) -> do do kl_fail
                                         _ -> throwError "if: expected boolean"

kl_cut :: Core.Types.KLValue ->
          Core.Types.KLValue ->
          Core.Types.KLValue ->
          Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_cut (!kl_V1670) (!kl_V1671) (!kl_V1672) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Result) -> do let pat_cond_1 = do return kl_V1670
                                                                                                                     pat_cond_2 = do do return kl_Result
                                                                                                                  in case kl_Result of
                                                                                                                         kl_Result@(Atom (UnboundSym "false")) -> pat_cond_1
                                                                                                                         kl_Result@(Atom (B (False))) -> pat_cond_1
                                                                                                                         _ -> pat_cond_2)))
                                                !appl_3 <- kl_V1672 `pseq` kl_thaw kl_V1672
                                                appl_3 `pseq` applyWrapper appl_0 [appl_3]

kl_shen_insert_modes :: Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_insert_modes (!kl_V1674) = do !kl_if_0 <- let pat_cond_1 kl_V1674 kl_V1674h kl_V1674t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1674t kl_V1674th kl_V1674tt = do !kl_if_6 <- let pat_cond_7 kl_V1674tt kl_V1674tth kl_V1674ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                      !kl_if_9 <- appl_8 `pseq` (kl_V1674ttt `pseq` eq appl_8 kl_V1674ttt)
                                                                                                                                                                                                                                                                      case kl_if_9 of
                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                   pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                                in case kl_V1674tt of
                                                                                                                                                                                                                       !(kl_V1674tt@(Cons (!kl_V1674tth)
                                                                                                                                                                                                                                          (!kl_V1674ttt))) -> pat_cond_7 kl_V1674tt kl_V1674tth kl_V1674ttt
                                                                                                                                                                                                                       _ -> pat_cond_10
                                                                                                                                                                                                   case kl_if_6 of
                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                   pat_cond_11 = do do return (Atom (B False))
                                                                                                                                                in case kl_V1674t of
                                                                                                                                                       !(kl_V1674t@(Cons (!kl_V1674th)
                                                                                                                                                                         (!kl_V1674tt))) -> pat_cond_5 kl_V1674t kl_V1674th kl_V1674tt
                                                                                                                                                       _ -> pat_cond_11
                                                                                                                                   case kl_if_4 of
                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                   pat_cond_12 = do do return (Atom (B False))
                                                                                                                in case kl_V1674h of
                                                                                                                       kl_V1674h@(Atom (UnboundSym "mode")) -> pat_cond_3
                                                                                                                       kl_V1674h@(ApplC (PL "mode"
                                                                                                                                            _)) -> pat_cond_3
                                                                                                                       kl_V1674h@(ApplC (Func "mode"
                                                                                                                                              _)) -> pat_cond_3
                                                                                                                       _ -> pat_cond_12
                                                                                                   case kl_if_2 of
                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                       _ -> throwError "if: expected boolean"
                                                      pat_cond_13 = do do return (Atom (B False))
                                                   in case kl_V1674 of
                                                          !(kl_V1674@(Cons (!kl_V1674h)
                                                                           (!kl_V1674t))) -> pat_cond_1 kl_V1674 kl_V1674h kl_V1674t
                                                          _ -> pat_cond_13
                                      case kl_if_0 of
                                          Atom (B (True)) -> do return kl_V1674
                                          Atom (B (False)) -> do let !appl_14 = Atom Nil
                                                                 !kl_if_15 <- appl_14 `pseq` (kl_V1674 `pseq` eq appl_14 kl_V1674)
                                                                 case kl_if_15 of
                                                                     Atom (B (True)) -> do return (Atom Nil)
                                                                     Atom (B (False)) -> do let pat_cond_16 kl_V1674 kl_V1674h kl_V1674t = do let !appl_17 = Atom Nil
                                                                                                                                              !appl_18 <- appl_17 `pseq` klCons (ApplC (wrapNamed "+" add)) appl_17
                                                                                                                                              !appl_19 <- kl_V1674h `pseq` (appl_18 `pseq` klCons kl_V1674h appl_18)
                                                                                                                                              !appl_20 <- appl_19 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_19
                                                                                                                                              !appl_21 <- kl_V1674t `pseq` kl_shen_insert_modes kl_V1674t
                                                                                                                                              let !appl_22 = Atom Nil
                                                                                                                                              !appl_23 <- appl_22 `pseq` klCons (ApplC (wrapNamed "-" Primitives.subtract)) appl_22
                                                                                                                                              !appl_24 <- appl_21 `pseq` (appl_23 `pseq` klCons appl_21 appl_23)
                                                                                                                                              !appl_25 <- appl_24 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_24
                                                                                                                                              appl_20 `pseq` (appl_25 `pseq` klCons appl_20 appl_25)
                                                                                                pat_cond_26 = do do return kl_V1674
                                                                                             in case kl_V1674 of
                                                                                                    !(kl_V1674@(Cons (!kl_V1674h)
                                                                                                                     (!kl_V1674t))) -> pat_cond_16 kl_V1674 kl_V1674h kl_V1674t
                                                                                                    _ -> pat_cond_26
                                                                     _ -> throwError "if: expected boolean"
                                          _ -> throwError "if: expected boolean"

kl_shen_s_prolog :: Core.Types.KLValue ->
                    Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_s_prolog (!kl_V1676) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_eval kl_X)))
                                  !appl_1 <- kl_V1676 `pseq` kl_shen_prolog_RBshen kl_V1676
                                  appl_0 `pseq` (appl_1 `pseq` kl_map appl_0 appl_1)

kl_shen_prolog_RBshen :: Core.Types.KLValue ->
                         Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_prolog_RBshen (!kl_V1678) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_compile_prolog_procedure kl_X)))
                                       let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_s_prolog_clause kl_X)))
                                       let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_head_abstraction kl_X)))
                                       !appl_3 <- appl_2 `pseq` (kl_V1678 `pseq` kl_mapcan appl_2 kl_V1678)
                                       !appl_4 <- appl_1 `pseq` (appl_3 `pseq` kl_map appl_1 appl_3)
                                       !appl_5 <- appl_4 `pseq` kl_shen_group_clauses appl_4
                                       appl_0 `pseq` (appl_5 `pseq` kl_map appl_0 appl_5)

kl_shen_s_prolog_clause :: Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_s_prolog_clause (!kl_V1680) = do !kl_if_0 <- let pat_cond_1 kl_V1680 kl_V1680h kl_V1680t = do !kl_if_2 <- let pat_cond_3 kl_V1680t kl_V1680th kl_V1680tt = do !kl_if_4 <- let pat_cond_5 = do !kl_if_6 <- let pat_cond_7 kl_V1680tt kl_V1680tth kl_V1680ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                         !kl_if_9 <- appl_8 `pseq` (kl_V1680ttt `pseq` eq appl_8 kl_V1680ttt)
                                                                                                                                                                                                                                                                         case kl_if_9 of
                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                      pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                                   in case kl_V1680tt of
                                                                                                                                                                                                                          !(kl_V1680tt@(Cons (!kl_V1680tth)
                                                                                                                                                                                                                                             (!kl_V1680ttt))) -> pat_cond_7 kl_V1680tt kl_V1680tth kl_V1680ttt
                                                                                                                                                                                                                          _ -> pat_cond_10
                                                                                                                                                                                                      case kl_if_6 of
                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                      pat_cond_11 = do do return (Atom (B False))
                                                                                                                                                                                   in case kl_V1680th of
                                                                                                                                                                                          kl_V1680th@(Atom (UnboundSym ":-")) -> pat_cond_5
                                                                                                                                                                                          kl_V1680th@(ApplC (PL ":-"
                                                                                                                                                                                                                _)) -> pat_cond_5
                                                                                                                                                                                          kl_V1680th@(ApplC (Func ":-"
                                                                                                                                                                                                                  _)) -> pat_cond_5
                                                                                                                                                                                          _ -> pat_cond_11
                                                                                                                                                                      case kl_if_4 of
                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                      pat_cond_12 = do do return (Atom (B False))
                                                                                                                   in case kl_V1680t of
                                                                                                                          !(kl_V1680t@(Cons (!kl_V1680th)
                                                                                                                                            (!kl_V1680tt))) -> pat_cond_3 kl_V1680t kl_V1680th kl_V1680tt
                                                                                                                          _ -> pat_cond_12
                                                                                                      case kl_if_2 of
                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                          _ -> throwError "if: expected boolean"
                                                         pat_cond_13 = do do return (Atom (B False))
                                                      in case kl_V1680 of
                                                             !(kl_V1680@(Cons (!kl_V1680h)
                                                                              (!kl_V1680t))) -> pat_cond_1 kl_V1680 kl_V1680h kl_V1680t
                                                             _ -> pat_cond_13
                                         case kl_if_0 of
                                             Atom (B (True)) -> do !appl_14 <- kl_V1680 `pseq` hd kl_V1680
                                                                   let !appl_15 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_s_prolog_literal kl_X)))
                                                                   !appl_16 <- kl_V1680 `pseq` tl kl_V1680
                                                                   !appl_17 <- appl_16 `pseq` tl appl_16
                                                                   !appl_18 <- appl_17 `pseq` hd appl_17
                                                                   !appl_19 <- appl_15 `pseq` (appl_18 `pseq` kl_map appl_15 appl_18)
                                                                   let !appl_20 = Atom Nil
                                                                   !appl_21 <- appl_19 `pseq` (appl_20 `pseq` klCons appl_19 appl_20)
                                                                   !appl_22 <- appl_21 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym ":-")) appl_21
                                                                   appl_14 `pseq` (appl_22 `pseq` klCons appl_14 appl_22)
                                             Atom (B (False)) -> do do let !aw_23 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                       applyWrapper aw_23 [ApplC (wrapNamed "shen.s-prolog_clause" kl_shen_s_prolog_clause)]
                                             _ -> throwError "if: expected boolean"

kl_shen_head_abstraction :: Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_head_abstraction (!kl_V1682) = do !kl_if_0 <- let pat_cond_1 kl_V1682 kl_V1682h kl_V1682t = do !kl_if_2 <- let pat_cond_3 kl_V1682t kl_V1682th kl_V1682tt = do !kl_if_4 <- let pat_cond_5 = do !kl_if_6 <- let pat_cond_7 kl_V1682tt kl_V1682tth kl_V1682ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                          !kl_if_9 <- appl_8 `pseq` (kl_V1682ttt `pseq` eq appl_8 kl_V1682ttt)
                                                                                                                                                                                                                                                                          !kl_if_10 <- case kl_if_9 of
                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do !appl_11 <- kl_V1682h `pseq` kl_shen_complexity_head kl_V1682h
                                                                                                                                                                                                                                                                                                                 !appl_12 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*maxcomplexity*"))
                                                                                                                                                                                                                                                                                                                 !kl_if_13 <- appl_11 `pseq` (appl_12 `pseq` lessThan appl_11 appl_12)
                                                                                                                                                                                                                                                                                                                 case kl_if_13 of
                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                          case kl_if_10 of
                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                       pat_cond_14 = do do return (Atom (B False))
                                                                                                                                                                                                                    in case kl_V1682tt of
                                                                                                                                                                                                                           !(kl_V1682tt@(Cons (!kl_V1682tth)
                                                                                                                                                                                                                                              (!kl_V1682ttt))) -> pat_cond_7 kl_V1682tt kl_V1682tth kl_V1682ttt
                                                                                                                                                                                                                           _ -> pat_cond_14
                                                                                                                                                                                                       case kl_if_6 of
                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                       pat_cond_15 = do do return (Atom (B False))
                                                                                                                                                                                    in case kl_V1682th of
                                                                                                                                                                                           kl_V1682th@(Atom (UnboundSym ":-")) -> pat_cond_5
                                                                                                                                                                                           kl_V1682th@(ApplC (PL ":-"
                                                                                                                                                                                                                 _)) -> pat_cond_5
                                                                                                                                                                                           kl_V1682th@(ApplC (Func ":-"
                                                                                                                                                                                                                   _)) -> pat_cond_5
                                                                                                                                                                                           _ -> pat_cond_15
                                                                                                                                                                       case kl_if_4 of
                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                       pat_cond_16 = do do return (Atom (B False))
                                                                                                                    in case kl_V1682t of
                                                                                                                           !(kl_V1682t@(Cons (!kl_V1682th)
                                                                                                                                             (!kl_V1682tt))) -> pat_cond_3 kl_V1682t kl_V1682th kl_V1682tt
                                                                                                                           _ -> pat_cond_16
                                                                                                       case kl_if_2 of
                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                           _ -> throwError "if: expected boolean"
                                                          pat_cond_17 = do do return (Atom (B False))
                                                       in case kl_V1682 of
                                                              !(kl_V1682@(Cons (!kl_V1682h)
                                                                               (!kl_V1682t))) -> pat_cond_1 kl_V1682 kl_V1682h kl_V1682t
                                                              _ -> pat_cond_17
                                          case kl_if_0 of
                                              Atom (B (True)) -> do let !appl_18 = Atom Nil
                                                                    kl_V1682 `pseq` (appl_18 `pseq` klCons kl_V1682 appl_18)
                                              Atom (B (False)) -> do !kl_if_19 <- let pat_cond_20 kl_V1682 kl_V1682h kl_V1682t = do !kl_if_21 <- let pat_cond_22 kl_V1682h kl_V1682hh kl_V1682ht = do !kl_if_23 <- let pat_cond_24 kl_V1682t kl_V1682th kl_V1682tt = do !kl_if_25 <- let pat_cond_26 = do !kl_if_27 <- let pat_cond_28 kl_V1682tt kl_V1682tth kl_V1682ttt = do let !appl_29 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                               !kl_if_30 <- appl_29 `pseq` (kl_V1682ttt `pseq` eq appl_29 kl_V1682ttt)
                                                                                                                                                                                                                                                                                                                                                                               case kl_if_30 of
                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                           pat_cond_31 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                        in case kl_V1682tt of
                                                                                                                                                                                                                                                                                                                               !(kl_V1682tt@(Cons (!kl_V1682tth)
                                                                                                                                                                                                                                                                                                                                                  (!kl_V1682ttt))) -> pat_cond_28 kl_V1682tt kl_V1682tth kl_V1682ttt
                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_31
                                                                                                                                                                                                                                                                                                          case kl_if_27 of
                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                         pat_cond_32 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                      in case kl_V1682th of
                                                                                                                                                                                                                                                                                             kl_V1682th@(Atom (UnboundSym ":-")) -> pat_cond_26
                                                                                                                                                                                                                                                                                             kl_V1682th@(ApplC (PL ":-"
                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_26
                                                                                                                                                                                                                                                                                             kl_V1682th@(ApplC (Func ":-"
                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_26
                                                                                                                                                                                                                                                                                             _ -> pat_cond_32
                                                                                                                                                                                                                                                                        case kl_if_25 of
                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                       pat_cond_33 = do do return (Atom (B False))
                                                                                                                                                                                                                    in case kl_V1682t of
                                                                                                                                                                                                                           !(kl_V1682t@(Cons (!kl_V1682th)
                                                                                                                                                                                                                                             (!kl_V1682tt))) -> pat_cond_24 kl_V1682t kl_V1682th kl_V1682tt
                                                                                                                                                                                                                           _ -> pat_cond_33
                                                                                                                                                                                                      case kl_if_23 of
                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                     pat_cond_34 = do do return (Atom (B False))
                                                                                                                                                  in case kl_V1682h of
                                                                                                                                                         !(kl_V1682h@(Cons (!kl_V1682hh)
                                                                                                                                                                           (!kl_V1682ht))) -> pat_cond_22 kl_V1682h kl_V1682hh kl_V1682ht
                                                                                                                                                         _ -> pat_cond_34
                                                                                                                                    case kl_if_21 of
                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                      pat_cond_35 = do do return (Atom (B False))
                                                                                   in case kl_V1682 of
                                                                                          !(kl_V1682@(Cons (!kl_V1682h)
                                                                                                           (!kl_V1682t))) -> pat_cond_20 kl_V1682 kl_V1682h kl_V1682t
                                                                                          _ -> pat_cond_35
                                                                     case kl_if_19 of
                                                                         Atom (B (True)) -> do let !appl_36 = ApplC (Func "lambda" (Context (\(!kl_Terms) -> do let !appl_37 = ApplC (Func "lambda" (Context (\(!kl_XTerms) -> do let !appl_38 = ApplC (Func "lambda" (Context (\(!kl_Literal) -> do let !appl_39 = ApplC (Func "lambda" (Context (\(!kl_Clause) -> do let !appl_40 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                       kl_Clause `pseq` (appl_40 `pseq` klCons kl_Clause appl_40))))
                                                                                                                                                                                                                                                                                                     !appl_41 <- kl_V1682 `pseq` hd kl_V1682
                                                                                                                                                                                                                                                                                                     !appl_42 <- appl_41 `pseq` hd appl_41
                                                                                                                                                                                                                                                                                                     !appl_43 <- appl_42 `pseq` (kl_Terms `pseq` klCons appl_42 kl_Terms)
                                                                                                                                                                                                                                                                                                     !appl_44 <- kl_V1682 `pseq` tl kl_V1682
                                                                                                                                                                                                                                                                                                     !appl_45 <- appl_44 `pseq` tl appl_44
                                                                                                                                                                                                                                                                                                     !appl_46 <- appl_45 `pseq` hd appl_45
                                                                                                                                                                                                                                                                                                     !appl_47 <- kl_Literal `pseq` (appl_46 `pseq` klCons kl_Literal appl_46)
                                                                                                                                                                                                                                                                                                     let !appl_48 = Atom Nil
                                                                                                                                                                                                                                                                                                     !appl_49 <- appl_47 `pseq` (appl_48 `pseq` klCons appl_47 appl_48)
                                                                                                                                                                                                                                                                                                     !appl_50 <- appl_49 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym ":-")) appl_49
                                                                                                                                                                                                                                                                                                     !appl_51 <- appl_43 `pseq` (appl_50 `pseq` klCons appl_43 appl_50)
                                                                                                                                                                                                                                                                                                     appl_51 `pseq` applyWrapper appl_39 [appl_51])))
                                                                                                                                                                                                                                  !appl_52 <- kl_Terms `pseq` kl_shen_cons_form kl_Terms
                                                                                                                                                                                                                                  let !appl_53 = Atom Nil
                                                                                                                                                                                                                                  !appl_54 <- kl_XTerms `pseq` (appl_53 `pseq` klCons kl_XTerms appl_53)
                                                                                                                                                                                                                                  !appl_55 <- appl_52 `pseq` (appl_54 `pseq` klCons appl_52 appl_54)
                                                                                                                                                                                                                                  !appl_56 <- appl_55 `pseq` klCons (ApplC (wrapNamed "unify" kl_unify)) appl_55
                                                                                                                                                                                                                                  appl_56 `pseq` applyWrapper appl_38 [appl_56])))
                                                                                                                                                                !appl_57 <- kl_V1682 `pseq` hd kl_V1682
                                                                                                                                                                !appl_58 <- appl_57 `pseq` tl appl_57
                                                                                                                                                                !appl_59 <- appl_58 `pseq` kl_shen_remove_modes appl_58
                                                                                                                                                                !appl_60 <- appl_59 `pseq` kl_shen_rcons_form appl_59
                                                                                                                                                                appl_60 `pseq` applyWrapper appl_37 [appl_60])))
                                                                                               let !appl_61 = ApplC (Func "lambda" (Context (\(!kl_Y) -> do kl_gensym (Core.Types.Atom (Core.Types.UnboundSym "V")))))
                                                                                               !appl_62 <- kl_V1682 `pseq` hd kl_V1682
                                                                                               !appl_63 <- appl_62 `pseq` tl appl_62
                                                                                               !appl_64 <- appl_61 `pseq` (appl_63 `pseq` kl_map appl_61 appl_63)
                                                                                               appl_64 `pseq` applyWrapper appl_36 [appl_64]
                                                                         Atom (B (False)) -> do do let !aw_65 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                   applyWrapper aw_65 [ApplC (wrapNamed "shen.head_abstraction" kl_shen_head_abstraction)]
                                                                         _ -> throwError "if: expected boolean"
                                              _ -> throwError "if: expected boolean"

kl_shen_complexity_head :: Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_complexity_head (!kl_V1688) = do let pat_cond_0 kl_V1688 kl_V1688h kl_V1688t = do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_complexity kl_X)))
                                                                                          !appl_2 <- appl_1 `pseq` (kl_V1688t `pseq` kl_map appl_1 kl_V1688t)
                                                                                          appl_2 `pseq` kl_shen_product appl_2
                                             pat_cond_3 = do do let !aw_4 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                applyWrapper aw_4 [ApplC (wrapNamed "shen.complexity_head" kl_shen_complexity_head)]
                                          in case kl_V1688 of
                                                 !(kl_V1688@(Cons (!kl_V1688h)
                                                                  (!kl_V1688t))) -> pat_cond_0 kl_V1688 kl_V1688h kl_V1688t
                                                 _ -> pat_cond_3

kl_shen_complexity :: Core.Types.KLValue ->
                      Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_complexity (!kl_V1697) = do !kl_if_0 <- let pat_cond_1 kl_V1697 kl_V1697h kl_V1697t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1697t kl_V1697th kl_V1697tt = do !kl_if_6 <- let pat_cond_7 kl_V1697th kl_V1697thh kl_V1697tht = do !kl_if_8 <- let pat_cond_9 = do !kl_if_10 <- let pat_cond_11 kl_V1697tht kl_V1697thth kl_V1697thtt = do !kl_if_12 <- let pat_cond_13 kl_V1697thtt kl_V1697thtth kl_V1697thttt = do let !appl_14 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                       !kl_if_15 <- appl_14 `pseq` (kl_V1697thttt `pseq` eq appl_14 kl_V1697thttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                       !kl_if_16 <- case kl_if_15 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do !kl_if_17 <- let pat_cond_18 kl_V1697tt kl_V1697tth kl_V1697ttt = do let !appl_19 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_20 <- appl_19 `pseq` (kl_V1697ttt `pseq` eq appl_19 kl_V1697ttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_20 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_21 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1697tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !(kl_V1697tt@(Cons (!kl_V1697tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1697ttt))) -> pat_cond_18 kl_V1697tt kl_V1697tth kl_V1697ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_21
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_17 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_16 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_22 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1697thtt of
                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1697thtt@(Cons (!kl_V1697thtth)
                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1697thttt))) -> pat_cond_13 kl_V1697thtt kl_V1697thtth kl_V1697thttt
                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_22
                                                                                                                                                                                                                                                                                                                                                                            case kl_if_12 of
                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                     pat_cond_23 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                  in case kl_V1697tht of
                                                                                                                                                                                                                                                                                                                         !(kl_V1697tht@(Cons (!kl_V1697thth)
                                                                                                                                                                                                                                                                                                                                             (!kl_V1697thtt))) -> pat_cond_11 kl_V1697tht kl_V1697thth kl_V1697thtt
                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_23
                                                                                                                                                                                                                                                                                                    case kl_if_10 of
                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                    pat_cond_24 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                 in case kl_V1697thh of
                                                                                                                                                                                                                                                                                        kl_V1697thh@(Atom (UnboundSym "mode")) -> pat_cond_9
                                                                                                                                                                                                                                                                                        kl_V1697thh@(ApplC (PL "mode"
                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                        kl_V1697thh@(ApplC (Func "mode"
                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                        _ -> pat_cond_24
                                                                                                                                                                                                                                                                    case kl_if_8 of
                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                 pat_cond_25 = do do return (Atom (B False))
                                                                                                                                                                                                              in case kl_V1697th of
                                                                                                                                                                                                                     !(kl_V1697th@(Cons (!kl_V1697thh)
                                                                                                                                                                                                                                        (!kl_V1697tht))) -> pat_cond_7 kl_V1697th kl_V1697thh kl_V1697tht
                                                                                                                                                                                                                     _ -> pat_cond_25
                                                                                                                                                                                                 case kl_if_6 of
                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                 pat_cond_26 = do do return (Atom (B False))
                                                                                                                                              in case kl_V1697t of
                                                                                                                                                     !(kl_V1697t@(Cons (!kl_V1697th)
                                                                                                                                                                       (!kl_V1697tt))) -> pat_cond_5 kl_V1697t kl_V1697th kl_V1697tt
                                                                                                                                                     _ -> pat_cond_26
                                                                                                                                 case kl_if_4 of
                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                 pat_cond_27 = do do return (Atom (B False))
                                                                                                              in case kl_V1697h of
                                                                                                                     kl_V1697h@(Atom (UnboundSym "mode")) -> pat_cond_3
                                                                                                                     kl_V1697h@(ApplC (PL "mode"
                                                                                                                                          _)) -> pat_cond_3
                                                                                                                     kl_V1697h@(ApplC (Func "mode"
                                                                                                                                            _)) -> pat_cond_3
                                                                                                                     _ -> pat_cond_27
                                                                                                 case kl_if_2 of
                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                     _ -> throwError "if: expected boolean"
                                                    pat_cond_28 = do do return (Atom (B False))
                                                 in case kl_V1697 of
                                                        !(kl_V1697@(Cons (!kl_V1697h)
                                                                         (!kl_V1697t))) -> pat_cond_1 kl_V1697 kl_V1697h kl_V1697t
                                                        _ -> pat_cond_28
                                    case kl_if_0 of
                                        Atom (B (True)) -> do !appl_29 <- kl_V1697 `pseq` tl kl_V1697
                                                              !appl_30 <- appl_29 `pseq` hd appl_29
                                                              appl_30 `pseq` kl_shen_complexity appl_30
                                        Atom (B (False)) -> do !kl_if_31 <- let pat_cond_32 kl_V1697 kl_V1697h kl_V1697t = do !kl_if_33 <- let pat_cond_34 = do !kl_if_35 <- let pat_cond_36 kl_V1697t kl_V1697th kl_V1697tt = do !kl_if_37 <- let pat_cond_38 kl_V1697th kl_V1697thh kl_V1697tht = do !kl_if_39 <- let pat_cond_40 kl_V1697tt kl_V1697tth kl_V1697ttt = do !kl_if_41 <- let pat_cond_42 = do let !appl_43 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                              !kl_if_44 <- appl_43 `pseq` (kl_V1697ttt `pseq` eq appl_43 kl_V1697ttt)
                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_44 of
                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_45 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1697tth of
                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1697tth@(Atom (UnboundSym "+")) -> pat_cond_42
                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1697tth@(ApplC (PL "+"
                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_42
                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1697tth@(ApplC (Func "+"
                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_42
                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_45
                                                                                                                                                                                                                                                                                                                                                                            case kl_if_41 of
                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                        pat_cond_46 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                     in case kl_V1697tt of
                                                                                                                                                                                                                                                                                                                            !(kl_V1697tt@(Cons (!kl_V1697tth)
                                                                                                                                                                                                                                                                                                                                               (!kl_V1697ttt))) -> pat_cond_40 kl_V1697tt kl_V1697tth kl_V1697ttt
                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_46
                                                                                                                                                                                                                                                                                                       case kl_if_39 of
                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                   pat_cond_47 = do do return (Atom (B False))
                                                                                                                                                                                                                                                in case kl_V1697th of
                                                                                                                                                                                                                                                       !(kl_V1697th@(Cons (!kl_V1697thh)
                                                                                                                                                                                                                                                                          (!kl_V1697tht))) -> pat_cond_38 kl_V1697th kl_V1697thh kl_V1697tht
                                                                                                                                                                                                                                                       _ -> pat_cond_47
                                                                                                                                                                                                                                  case kl_if_37 of
                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                 pat_cond_48 = do do return (Atom (B False))
                                                                                                                                                                              in case kl_V1697t of
                                                                                                                                                                                     !(kl_V1697t@(Cons (!kl_V1697th)
                                                                                                                                                                                                       (!kl_V1697tt))) -> pat_cond_36 kl_V1697t kl_V1697th kl_V1697tt
                                                                                                                                                                                     _ -> pat_cond_48
                                                                                                                                                                case kl_if_35 of
                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                               pat_cond_49 = do do return (Atom (B False))
                                                                                                                                            in case kl_V1697h of
                                                                                                                                                   kl_V1697h@(Atom (UnboundSym "mode")) -> pat_cond_34
                                                                                                                                                   kl_V1697h@(ApplC (PL "mode"
                                                                                                                                                                        _)) -> pat_cond_34
                                                                                                                                                   kl_V1697h@(ApplC (Func "mode"
                                                                                                                                                                          _)) -> pat_cond_34
                                                                                                                                                   _ -> pat_cond_49
                                                                                                                              case kl_if_33 of
                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                pat_cond_50 = do do return (Atom (B False))
                                                                             in case kl_V1697 of
                                                                                    !(kl_V1697@(Cons (!kl_V1697h)
                                                                                                     (!kl_V1697t))) -> pat_cond_32 kl_V1697 kl_V1697h kl_V1697t
                                                                                    _ -> pat_cond_50
                                                               case kl_if_31 of
                                                                   Atom (B (True)) -> do !appl_51 <- kl_V1697 `pseq` tl kl_V1697
                                                                                         !appl_52 <- appl_51 `pseq` hd appl_51
                                                                                         !appl_53 <- appl_52 `pseq` hd appl_52
                                                                                         !appl_54 <- kl_V1697 `pseq` tl kl_V1697
                                                                                         !appl_55 <- appl_54 `pseq` tl appl_54
                                                                                         !appl_56 <- appl_53 `pseq` (appl_55 `pseq` klCons appl_53 appl_55)
                                                                                         !appl_57 <- appl_56 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_56
                                                                                         !appl_58 <- appl_57 `pseq` kl_shen_complexity appl_57
                                                                                         !appl_59 <- kl_V1697 `pseq` tl kl_V1697
                                                                                         !appl_60 <- appl_59 `pseq` hd appl_59
                                                                                         !appl_61 <- appl_60 `pseq` tl appl_60
                                                                                         !appl_62 <- kl_V1697 `pseq` tl kl_V1697
                                                                                         !appl_63 <- appl_62 `pseq` tl appl_62
                                                                                         !appl_64 <- appl_61 `pseq` (appl_63 `pseq` klCons appl_61 appl_63)
                                                                                         !appl_65 <- appl_64 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_64
                                                                                         !appl_66 <- appl_65 `pseq` kl_shen_complexity appl_65
                                                                                         !appl_67 <- appl_58 `pseq` (appl_66 `pseq` multiply appl_58 appl_66)
                                                                                         appl_67 `pseq` multiply (Core.Types.Atom (Core.Types.N (Core.Types.KI 2))) appl_67
                                                                   Atom (B (False)) -> do !kl_if_68 <- let pat_cond_69 kl_V1697 kl_V1697h kl_V1697t = do !kl_if_70 <- let pat_cond_71 = do !kl_if_72 <- let pat_cond_73 kl_V1697t kl_V1697th kl_V1697tt = do !kl_if_74 <- let pat_cond_75 kl_V1697th kl_V1697thh kl_V1697tht = do !kl_if_76 <- let pat_cond_77 kl_V1697tt kl_V1697tth kl_V1697ttt = do !kl_if_78 <- let pat_cond_79 = do let !appl_80 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                         !kl_if_81 <- appl_80 `pseq` (kl_V1697ttt `pseq` eq appl_80 kl_V1697ttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_81 of
                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                        pat_cond_82 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                     in case kl_V1697tth of
                                                                                                                                                                                                                                                                                                                                                                                                                            kl_V1697tth@(Atom (UnboundSym "-")) -> pat_cond_79
                                                                                                                                                                                                                                                                                                                                                                                                                            kl_V1697tth@(ApplC (PL "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_79
                                                                                                                                                                                                                                                                                                                                                                                                                            kl_V1697tth@(ApplC (Func "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_79
                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_82
                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_78 of
                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                   pat_cond_83 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                in case kl_V1697tt of
                                                                                                                                                                                                                                                                                                                                                       !(kl_V1697tt@(Cons (!kl_V1697tth)
                                                                                                                                                                                                                                                                                                                                                                          (!kl_V1697ttt))) -> pat_cond_77 kl_V1697tt kl_V1697tth kl_V1697ttt
                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_83
                                                                                                                                                                                                                                                                                                                                  case kl_if_76 of
                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                              pat_cond_84 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                           in case kl_V1697th of
                                                                                                                                                                                                                                                                                  !(kl_V1697th@(Cons (!kl_V1697thh)
                                                                                                                                                                                                                                                                                                     (!kl_V1697tht))) -> pat_cond_75 kl_V1697th kl_V1697thh kl_V1697tht
                                                                                                                                                                                                                                                                                  _ -> pat_cond_84
                                                                                                                                                                                                                                                             case kl_if_74 of
                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                            pat_cond_85 = do do return (Atom (B False))
                                                                                                                                                                                                         in case kl_V1697t of
                                                                                                                                                                                                                !(kl_V1697t@(Cons (!kl_V1697th)
                                                                                                                                                                                                                                  (!kl_V1697tt))) -> pat_cond_73 kl_V1697t kl_V1697th kl_V1697tt
                                                                                                                                                                                                                _ -> pat_cond_85
                                                                                                                                                                                           case kl_if_72 of
                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                          pat_cond_86 = do do return (Atom (B False))
                                                                                                                                                                       in case kl_V1697h of
                                                                                                                                                                              kl_V1697h@(Atom (UnboundSym "mode")) -> pat_cond_71
                                                                                                                                                                              kl_V1697h@(ApplC (PL "mode"
                                                                                                                                                                                                   _)) -> pat_cond_71
                                                                                                                                                                              kl_V1697h@(ApplC (Func "mode"
                                                                                                                                                                                                     _)) -> pat_cond_71
                                                                                                                                                                              _ -> pat_cond_86
                                                                                                                                                         case kl_if_70 of
                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                           pat_cond_87 = do do return (Atom (B False))
                                                                                                        in case kl_V1697 of
                                                                                                               !(kl_V1697@(Cons (!kl_V1697h)
                                                                                                                                (!kl_V1697t))) -> pat_cond_69 kl_V1697 kl_V1697h kl_V1697t
                                                                                                               _ -> pat_cond_87
                                                                                          case kl_if_68 of
                                                                                              Atom (B (True)) -> do !appl_88 <- kl_V1697 `pseq` tl kl_V1697
                                                                                                                    !appl_89 <- appl_88 `pseq` hd appl_88
                                                                                                                    !appl_90 <- appl_89 `pseq` hd appl_89
                                                                                                                    !appl_91 <- kl_V1697 `pseq` tl kl_V1697
                                                                                                                    !appl_92 <- appl_91 `pseq` tl appl_91
                                                                                                                    !appl_93 <- appl_90 `pseq` (appl_92 `pseq` klCons appl_90 appl_92)
                                                                                                                    !appl_94 <- appl_93 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_93
                                                                                                                    !appl_95 <- appl_94 `pseq` kl_shen_complexity appl_94
                                                                                                                    !appl_96 <- kl_V1697 `pseq` tl kl_V1697
                                                                                                                    !appl_97 <- appl_96 `pseq` hd appl_96
                                                                                                                    !appl_98 <- appl_97 `pseq` tl appl_97
                                                                                                                    !appl_99 <- kl_V1697 `pseq` tl kl_V1697
                                                                                                                    !appl_100 <- appl_99 `pseq` tl appl_99
                                                                                                                    !appl_101 <- appl_98 `pseq` (appl_100 `pseq` klCons appl_98 appl_100)
                                                                                                                    !appl_102 <- appl_101 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_101
                                                                                                                    !appl_103 <- appl_102 `pseq` kl_shen_complexity appl_102
                                                                                                                    appl_95 `pseq` (appl_103 `pseq` multiply appl_95 appl_103)
                                                                                              Atom (B (False)) -> do !kl_if_104 <- let pat_cond_105 kl_V1697 kl_V1697h kl_V1697t = do !kl_if_106 <- let pat_cond_107 = do !kl_if_108 <- let pat_cond_109 kl_V1697t kl_V1697th kl_V1697tt = do !kl_if_110 <- let pat_cond_111 kl_V1697tt kl_V1697tth kl_V1697ttt = do let !appl_112 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                     !kl_if_113 <- appl_112 `pseq` (kl_V1697ttt `pseq` eq appl_112 kl_V1697ttt)
                                                                                                                                                                                                                                                                                                                                                                     !kl_if_114 <- case kl_if_113 of
                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do !kl_if_115 <- kl_V1697th `pseq` kl_variableP kl_V1697th
                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_115 of
                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                     case kl_if_114 of
                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                pat_cond_116 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                             in case kl_V1697tt of
                                                                                                                                                                                                                                                                                                                    !(kl_V1697tt@(Cons (!kl_V1697tth)
                                                                                                                                                                                                                                                                                                                                       (!kl_V1697ttt))) -> pat_cond_111 kl_V1697tt kl_V1697tth kl_V1697ttt
                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_116
                                                                                                                                                                                                                                                                                              case kl_if_110 of
                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                            pat_cond_117 = do do return (Atom (B False))
                                                                                                                                                                                                                                         in case kl_V1697t of
                                                                                                                                                                                                                                                !(kl_V1697t@(Cons (!kl_V1697th)
                                                                                                                                                                                                                                                                  (!kl_V1697tt))) -> pat_cond_109 kl_V1697t kl_V1697th kl_V1697tt
                                                                                                                                                                                                                                                _ -> pat_cond_117
                                                                                                                                                                                                                          case kl_if_108 of
                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                        pat_cond_118 = do do return (Atom (B False))
                                                                                                                                                                                                     in case kl_V1697h of
                                                                                                                                                                                                            kl_V1697h@(Atom (UnboundSym "mode")) -> pat_cond_107
                                                                                                                                                                                                            kl_V1697h@(ApplC (PL "mode"
                                                                                                                                                                                                                                 _)) -> pat_cond_107
                                                                                                                                                                                                            kl_V1697h@(ApplC (Func "mode"
                                                                                                                                                                                                                                   _)) -> pat_cond_107
                                                                                                                                                                                                            _ -> pat_cond_118
                                                                                                                                                                                      case kl_if_106 of
                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                       pat_cond_119 = do do return (Atom (B False))
                                                                                                                                    in case kl_V1697 of
                                                                                                                                           !(kl_V1697@(Cons (!kl_V1697h)
                                                                                                                                                            (!kl_V1697t))) -> pat_cond_105 kl_V1697 kl_V1697h kl_V1697t
                                                                                                                                           _ -> pat_cond_119
                                                                                                                     case kl_if_104 of
                                                                                                                         Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                                                         Atom (B (False)) -> do !kl_if_120 <- let pat_cond_121 kl_V1697 kl_V1697h kl_V1697t = do !kl_if_122 <- let pat_cond_123 = do !kl_if_124 <- let pat_cond_125 kl_V1697t kl_V1697th kl_V1697tt = do !kl_if_126 <- let pat_cond_127 kl_V1697tt kl_V1697tth kl_V1697ttt = do !kl_if_128 <- let pat_cond_129 = do let !appl_130 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_131 <- appl_130 `pseq` (kl_V1697ttt `pseq` eq appl_130 kl_V1697ttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_131 of
                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_132 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1697tth of
                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1697tth@(Atom (UnboundSym "+")) -> pat_cond_129
                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1697tth@(ApplC (PL "+"
                                                                                                                                                                                                                                                                                                                                                                                                                                             _)) -> pat_cond_129
                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1697tth@(ApplC (Func "+"
                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_129
                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_132
                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_128 of
                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                           pat_cond_133 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                        in case kl_V1697tt of
                                                                                                                                                                                                                                                                                                                                               !(kl_V1697tt@(Cons (!kl_V1697tth)
                                                                                                                                                                                                                                                                                                                                                                  (!kl_V1697ttt))) -> pat_cond_127 kl_V1697tt kl_V1697tth kl_V1697ttt
                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_133
                                                                                                                                                                                                                                                                                                                         case kl_if_126 of
                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                       pat_cond_134 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                    in case kl_V1697t of
                                                                                                                                                                                                                                                                           !(kl_V1697t@(Cons (!kl_V1697th)
                                                                                                                                                                                                                                                                                             (!kl_V1697tt))) -> pat_cond_125 kl_V1697t kl_V1697th kl_V1697tt
                                                                                                                                                                                                                                                                           _ -> pat_cond_134
                                                                                                                                                                                                                                                     case kl_if_124 of
                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                   pat_cond_135 = do do return (Atom (B False))
                                                                                                                                                                                                                                in case kl_V1697h of
                                                                                                                                                                                                                                       kl_V1697h@(Atom (UnboundSym "mode")) -> pat_cond_123
                                                                                                                                                                                                                                       kl_V1697h@(ApplC (PL "mode"
                                                                                                                                                                                                                                                            _)) -> pat_cond_123
                                                                                                                                                                                                                                       kl_V1697h@(ApplC (Func "mode"
                                                                                                                                                                                                                                                              _)) -> pat_cond_123
                                                                                                                                                                                                                                       _ -> pat_cond_135
                                                                                                                                                                                                                 case kl_if_122 of
                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                  pat_cond_136 = do do return (Atom (B False))
                                                                                                                                                               in case kl_V1697 of
                                                                                                                                                                      !(kl_V1697@(Cons (!kl_V1697h)
                                                                                                                                                                                       (!kl_V1697t))) -> pat_cond_121 kl_V1697 kl_V1697h kl_V1697t
                                                                                                                                                                      _ -> pat_cond_136
                                                                                                                                                case kl_if_120 of
                                                                                                                                                    Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 2)))
                                                                                                                                                    Atom (B (False)) -> do !kl_if_137 <- let pat_cond_138 kl_V1697 kl_V1697h kl_V1697t = do !kl_if_139 <- let pat_cond_140 = do !kl_if_141 <- let pat_cond_142 kl_V1697t kl_V1697th kl_V1697tt = do !kl_if_143 <- let pat_cond_144 kl_V1697tt kl_V1697tth kl_V1697ttt = do !kl_if_145 <- let pat_cond_146 = do let !appl_147 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_148 <- appl_147 `pseq` (kl_V1697ttt `pseq` eq appl_147 kl_V1697ttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_148 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_149 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1697tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1697tth@(Atom (UnboundSym "-")) -> pat_cond_146
                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1697tth@(ApplC (PL "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_146
                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1697tth@(ApplC (Func "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_146
                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_149
                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_145 of
                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                      pat_cond_150 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1697tt of
                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1697tt@(Cons (!kl_V1697tth)
                                                                                                                                                                                                                                                                                                                                                                                             (!kl_V1697ttt))) -> pat_cond_144 kl_V1697tt kl_V1697tth kl_V1697ttt
                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_150
                                                                                                                                                                                                                                                                                                                                                    case kl_if_143 of
                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                  pat_cond_151 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                               in case kl_V1697t of
                                                                                                                                                                                                                                                                                                      !(kl_V1697t@(Cons (!kl_V1697th)
                                                                                                                                                                                                                                                                                                                        (!kl_V1697tt))) -> pat_cond_142 kl_V1697t kl_V1697th kl_V1697tt
                                                                                                                                                                                                                                                                                                      _ -> pat_cond_151
                                                                                                                                                                                                                                                                                case kl_if_141 of
                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                              pat_cond_152 = do do return (Atom (B False))
                                                                                                                                                                                                                                                           in case kl_V1697h of
                                                                                                                                                                                                                                                                  kl_V1697h@(Atom (UnboundSym "mode")) -> pat_cond_140
                                                                                                                                                                                                                                                                  kl_V1697h@(ApplC (PL "mode"
                                                                                                                                                                                                                                                                                       _)) -> pat_cond_140
                                                                                                                                                                                                                                                                  kl_V1697h@(ApplC (Func "mode"
                                                                                                                                                                                                                                                                                         _)) -> pat_cond_140
                                                                                                                                                                                                                                                                  _ -> pat_cond_152
                                                                                                                                                                                                                                            case kl_if_139 of
                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                             pat_cond_153 = do do return (Atom (B False))
                                                                                                                                                                                          in case kl_V1697 of
                                                                                                                                                                                                 !(kl_V1697@(Cons (!kl_V1697h)
                                                                                                                                                                                                                  (!kl_V1697t))) -> pat_cond_138 kl_V1697 kl_V1697h kl_V1697t
                                                                                                                                                                                                 _ -> pat_cond_153
                                                                                                                                                                           case kl_if_137 of
                                                                                                                                                                               Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                                                                                                               Atom (B (False)) -> do do let !appl_154 = Atom Nil
                                                                                                                                                                                                         !appl_155 <- appl_154 `pseq` klCons (ApplC (wrapNamed "+" add)) appl_154
                                                                                                                                                                                                         !appl_156 <- kl_V1697 `pseq` (appl_155 `pseq` klCons kl_V1697 appl_155)
                                                                                                                                                                                                         !appl_157 <- appl_156 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_156
                                                                                                                                                                                                         appl_157 `pseq` kl_shen_complexity appl_157
                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                              _ -> throwError "if: expected boolean"
                                                                   _ -> throwError "if: expected boolean"
                                        _ -> throwError "if: expected boolean"

kl_shen_product :: Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_product (!kl_V1699) = do let !appl_0 = Atom Nil
                                 !kl_if_1 <- appl_0 `pseq` (kl_V1699 `pseq` eq appl_0 kl_V1699)
                                 case kl_if_1 of
                                     Atom (B (True)) -> do return (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                     Atom (B (False)) -> do let pat_cond_2 kl_V1699 kl_V1699h kl_V1699t = do !appl_3 <- kl_V1699t `pseq` kl_shen_product kl_V1699t
                                                                                                             kl_V1699h `pseq` (appl_3 `pseq` multiply kl_V1699h appl_3)
                                                                pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                   applyWrapper aw_5 [ApplC (wrapNamed "shen.product" kl_shen_product)]
                                                             in case kl_V1699 of
                                                                    !(kl_V1699@(Cons (!kl_V1699h)
                                                                                     (!kl_V1699t))) -> pat_cond_2 kl_V1699 kl_V1699h kl_V1699t
                                                                    _ -> pat_cond_4
                                     _ -> throwError "if: expected boolean"

kl_shen_s_prolog_literal :: Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_s_prolog_literal (!kl_V1701) = do !kl_if_0 <- let pat_cond_1 kl_V1701 kl_V1701h kl_V1701t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1701t kl_V1701th kl_V1701tt = do !kl_if_6 <- let pat_cond_7 kl_V1701tt kl_V1701tth kl_V1701ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                          !kl_if_9 <- appl_8 `pseq` (kl_V1701ttt `pseq` eq appl_8 kl_V1701ttt)
                                                                                                                                                                                                                                                                          case kl_if_9 of
                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                       pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                                    in case kl_V1701tt of
                                                                                                                                                                                                                           !(kl_V1701tt@(Cons (!kl_V1701tth)
                                                                                                                                                                                                                                              (!kl_V1701ttt))) -> pat_cond_7 kl_V1701tt kl_V1701tth kl_V1701ttt
                                                                                                                                                                                                                           _ -> pat_cond_10
                                                                                                                                                                                                       case kl_if_6 of
                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                       pat_cond_11 = do do return (Atom (B False))
                                                                                                                                                    in case kl_V1701t of
                                                                                                                                                           !(kl_V1701t@(Cons (!kl_V1701th)
                                                                                                                                                                             (!kl_V1701tt))) -> pat_cond_5 kl_V1701t kl_V1701th kl_V1701tt
                                                                                                                                                           _ -> pat_cond_11
                                                                                                                                       case kl_if_4 of
                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                       pat_cond_12 = do do return (Atom (B False))
                                                                                                                    in case kl_V1701h of
                                                                                                                           kl_V1701h@(Atom (UnboundSym "is")) -> pat_cond_3
                                                                                                                           kl_V1701h@(ApplC (PL "is"
                                                                                                                                                _)) -> pat_cond_3
                                                                                                                           kl_V1701h@(ApplC (Func "is"
                                                                                                                                                  _)) -> pat_cond_3
                                                                                                                           _ -> pat_cond_12
                                                                                                       case kl_if_2 of
                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                           _ -> throwError "if: expected boolean"
                                                          pat_cond_13 = do do return (Atom (B False))
                                                       in case kl_V1701 of
                                                              !(kl_V1701@(Cons (!kl_V1701h)
                                                                               (!kl_V1701t))) -> pat_cond_1 kl_V1701 kl_V1701h kl_V1701t
                                                              _ -> pat_cond_13
                                          case kl_if_0 of
                                              Atom (B (True)) -> do !appl_14 <- kl_V1701 `pseq` tl kl_V1701
                                                                    !appl_15 <- appl_14 `pseq` hd appl_14
                                                                    !appl_16 <- kl_V1701 `pseq` tl kl_V1701
                                                                    !appl_17 <- appl_16 `pseq` tl appl_16
                                                                    !appl_18 <- appl_17 `pseq` hd appl_17
                                                                    !appl_19 <- appl_18 `pseq` kl_shen_insert_deref appl_18
                                                                    let !appl_20 = Atom Nil
                                                                    !appl_21 <- appl_19 `pseq` (appl_20 `pseq` klCons appl_19 appl_20)
                                                                    !appl_22 <- appl_15 `pseq` (appl_21 `pseq` klCons appl_15 appl_21)
                                                                    appl_22 `pseq` klCons (ApplC (wrapNamed "bind" kl_bind)) appl_22
                                              Atom (B (False)) -> do !kl_if_23 <- let pat_cond_24 kl_V1701 kl_V1701h kl_V1701t = do !kl_if_25 <- let pat_cond_26 = do !kl_if_27 <- let pat_cond_28 kl_V1701t kl_V1701th kl_V1701tt = do let !appl_29 = Atom Nil
                                                                                                                                                                                                                                        !kl_if_30 <- appl_29 `pseq` (kl_V1701tt `pseq` eq appl_29 kl_V1701tt)
                                                                                                                                                                                                                                        case kl_if_30 of
                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                       pat_cond_31 = do do return (Atom (B False))
                                                                                                                                                                                    in case kl_V1701t of
                                                                                                                                                                                           !(kl_V1701t@(Cons (!kl_V1701th)
                                                                                                                                                                                                             (!kl_V1701tt))) -> pat_cond_28 kl_V1701t kl_V1701th kl_V1701tt
                                                                                                                                                                                           _ -> pat_cond_31
                                                                                                                                                                      case kl_if_27 of
                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                     pat_cond_32 = do do return (Atom (B False))
                                                                                                                                                  in case kl_V1701h of
                                                                                                                                                         kl_V1701h@(Atom (UnboundSym "when")) -> pat_cond_26
                                                                                                                                                         kl_V1701h@(ApplC (PL "when"
                                                                                                                                                                              _)) -> pat_cond_26
                                                                                                                                                         kl_V1701h@(ApplC (Func "when"
                                                                                                                                                                                _)) -> pat_cond_26
                                                                                                                                                         _ -> pat_cond_32
                                                                                                                                    case kl_if_25 of
                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                      pat_cond_33 = do do return (Atom (B False))
                                                                                   in case kl_V1701 of
                                                                                          !(kl_V1701@(Cons (!kl_V1701h)
                                                                                                           (!kl_V1701t))) -> pat_cond_24 kl_V1701 kl_V1701h kl_V1701t
                                                                                          _ -> pat_cond_33
                                                                     case kl_if_23 of
                                                                         Atom (B (True)) -> do !appl_34 <- kl_V1701 `pseq` tl kl_V1701
                                                                                               !appl_35 <- appl_34 `pseq` hd appl_34
                                                                                               !appl_36 <- appl_35 `pseq` kl_shen_insert_deref appl_35
                                                                                               let !appl_37 = Atom Nil
                                                                                               !appl_38 <- appl_36 `pseq` (appl_37 `pseq` klCons appl_36 appl_37)
                                                                                               appl_38 `pseq` klCons (ApplC (wrapNamed "fwhen" kl_fwhen)) appl_38
                                                                         Atom (B (False)) -> do !kl_if_39 <- let pat_cond_40 kl_V1701 kl_V1701h kl_V1701t = do !kl_if_41 <- let pat_cond_42 = do !kl_if_43 <- let pat_cond_44 kl_V1701t kl_V1701th kl_V1701tt = do !kl_if_45 <- let pat_cond_46 kl_V1701tt kl_V1701tth kl_V1701ttt = do let !appl_47 = Atom Nil
                                                                                                                                                                                                                                                                                                                                        !kl_if_48 <- appl_47 `pseq` (kl_V1701ttt `pseq` eq appl_47 kl_V1701ttt)
                                                                                                                                                                                                                                                                                                                                        case kl_if_48 of
                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                    pat_cond_49 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                 in case kl_V1701tt of
                                                                                                                                                                                                                                                                                        !(kl_V1701tt@(Cons (!kl_V1701tth)
                                                                                                                                                                                                                                                                                                           (!kl_V1701ttt))) -> pat_cond_46 kl_V1701tt kl_V1701tth kl_V1701ttt
                                                                                                                                                                                                                                                                                        _ -> pat_cond_49
                                                                                                                                                                                                                                                                   case kl_if_45 of
                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                  pat_cond_50 = do do return (Atom (B False))
                                                                                                                                                                                                               in case kl_V1701t of
                                                                                                                                                                                                                      !(kl_V1701t@(Cons (!kl_V1701th)
                                                                                                                                                                                                                                        (!kl_V1701tt))) -> pat_cond_44 kl_V1701t kl_V1701th kl_V1701tt
                                                                                                                                                                                                                      _ -> pat_cond_50
                                                                                                                                                                                                 case kl_if_43 of
                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                pat_cond_51 = do do return (Atom (B False))
                                                                                                                                                                             in case kl_V1701h of
                                                                                                                                                                                    kl_V1701h@(Atom (UnboundSym "bind")) -> pat_cond_42
                                                                                                                                                                                    kl_V1701h@(ApplC (PL "bind"
                                                                                                                                                                                                         _)) -> pat_cond_42
                                                                                                                                                                                    kl_V1701h@(ApplC (Func "bind"
                                                                                                                                                                                                           _)) -> pat_cond_42
                                                                                                                                                                                    _ -> pat_cond_51
                                                                                                                                                               case kl_if_41 of
                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                 pat_cond_52 = do do return (Atom (B False))
                                                                                                              in case kl_V1701 of
                                                                                                                     !(kl_V1701@(Cons (!kl_V1701h)
                                                                                                                                      (!kl_V1701t))) -> pat_cond_40 kl_V1701 kl_V1701h kl_V1701t
                                                                                                                     _ -> pat_cond_52
                                                                                                case kl_if_39 of
                                                                                                    Atom (B (True)) -> do !appl_53 <- kl_V1701 `pseq` tl kl_V1701
                                                                                                                          !appl_54 <- appl_53 `pseq` hd appl_53
                                                                                                                          !appl_55 <- kl_V1701 `pseq` tl kl_V1701
                                                                                                                          !appl_56 <- appl_55 `pseq` tl appl_55
                                                                                                                          !appl_57 <- appl_56 `pseq` hd appl_56
                                                                                                                          !appl_58 <- appl_57 `pseq` kl_shen_insert_lazyderef appl_57
                                                                                                                          let !appl_59 = Atom Nil
                                                                                                                          !appl_60 <- appl_58 `pseq` (appl_59 `pseq` klCons appl_58 appl_59)
                                                                                                                          !appl_61 <- appl_54 `pseq` (appl_60 `pseq` klCons appl_54 appl_60)
                                                                                                                          appl_61 `pseq` klCons (ApplC (wrapNamed "bind" kl_bind)) appl_61
                                                                                                    Atom (B (False)) -> do !kl_if_62 <- let pat_cond_63 kl_V1701 kl_V1701h kl_V1701t = do !kl_if_64 <- let pat_cond_65 = do !kl_if_66 <- let pat_cond_67 kl_V1701t kl_V1701th kl_V1701tt = do let !appl_68 = Atom Nil
                                                                                                                                                                                                                                                                                              !kl_if_69 <- appl_68 `pseq` (kl_V1701tt `pseq` eq appl_68 kl_V1701tt)
                                                                                                                                                                                                                                                                                              case kl_if_69 of
                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                             pat_cond_70 = do do return (Atom (B False))
                                                                                                                                                                                                                                          in case kl_V1701t of
                                                                                                                                                                                                                                                 !(kl_V1701t@(Cons (!kl_V1701th)
                                                                                                                                                                                                                                                                   (!kl_V1701tt))) -> pat_cond_67 kl_V1701t kl_V1701th kl_V1701tt
                                                                                                                                                                                                                                                 _ -> pat_cond_70
                                                                                                                                                                                                                            case kl_if_66 of
                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                           pat_cond_71 = do do return (Atom (B False))
                                                                                                                                                                                                        in case kl_V1701h of
                                                                                                                                                                                                               kl_V1701h@(Atom (UnboundSym "fwhen")) -> pat_cond_65
                                                                                                                                                                                                               kl_V1701h@(ApplC (PL "fwhen"
                                                                                                                                                                                                                                    _)) -> pat_cond_65
                                                                                                                                                                                                               kl_V1701h@(ApplC (Func "fwhen"
                                                                                                                                                                                                                                      _)) -> pat_cond_65
                                                                                                                                                                                                               _ -> pat_cond_71
                                                                                                                                                                                          case kl_if_64 of
                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                            pat_cond_72 = do do return (Atom (B False))
                                                                                                                                         in case kl_V1701 of
                                                                                                                                                !(kl_V1701@(Cons (!kl_V1701h)
                                                                                                                                                                 (!kl_V1701t))) -> pat_cond_63 kl_V1701 kl_V1701h kl_V1701t
                                                                                                                                                _ -> pat_cond_72
                                                                                                                           case kl_if_62 of
                                                                                                                               Atom (B (True)) -> do !appl_73 <- kl_V1701 `pseq` tl kl_V1701
                                                                                                                                                     !appl_74 <- appl_73 `pseq` hd appl_73
                                                                                                                                                     !appl_75 <- appl_74 `pseq` kl_shen_insert_lazyderef appl_74
                                                                                                                                                     let !appl_76 = Atom Nil
                                                                                                                                                     !appl_77 <- appl_75 `pseq` (appl_76 `pseq` klCons appl_75 appl_76)
                                                                                                                                                     appl_77 `pseq` klCons (ApplC (wrapNamed "fwhen" kl_fwhen)) appl_77
                                                                                                                               Atom (B (False)) -> do let pat_cond_78 kl_V1701 kl_V1701h kl_V1701t = do return kl_V1701
                                                                                                                                                          pat_cond_79 = do do let !aw_80 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                                                                              applyWrapper aw_80 [ApplC (wrapNamed "shen.s-prolog_literal" kl_shen_s_prolog_literal)]
                                                                                                                                                       in case kl_V1701 of
                                                                                                                                                              !(kl_V1701@(Cons (!kl_V1701h)
                                                                                                                                                                               (!kl_V1701t))) -> pat_cond_78 kl_V1701 kl_V1701h kl_V1701t
                                                                                                                                                              _ -> pat_cond_79
                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                    _ -> throwError "if: expected boolean"
                                                                         _ -> throwError "if: expected boolean"
                                              _ -> throwError "if: expected boolean"

kl_shen_insert_deref :: Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_insert_deref (!kl_V1703) = do !kl_if_0 <- kl_V1703 `pseq` kl_variableP kl_V1703
                                      case kl_if_0 of
                                          Atom (B (True)) -> do let !appl_1 = Atom Nil
                                                                !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_1
                                                                !appl_3 <- kl_V1703 `pseq` (appl_2 `pseq` klCons kl_V1703 appl_2)
                                                                appl_3 `pseq` klCons (ApplC (wrapNamed "shen.deref" kl_shen_deref)) appl_3
                                          Atom (B (False)) -> do let pat_cond_4 kl_V1703 kl_V1703h kl_V1703t = do !appl_5 <- kl_V1703h `pseq` kl_shen_insert_deref kl_V1703h
                                                                                                                  !appl_6 <- kl_V1703t `pseq` kl_shen_insert_deref kl_V1703t
                                                                                                                  appl_5 `pseq` (appl_6 `pseq` klCons appl_5 appl_6)
                                                                     pat_cond_7 = do do return kl_V1703
                                                                  in case kl_V1703 of
                                                                         !(kl_V1703@(Cons (!kl_V1703h)
                                                                                          (!kl_V1703t))) -> pat_cond_4 kl_V1703 kl_V1703h kl_V1703t
                                                                         _ -> pat_cond_7
                                          _ -> throwError "if: expected boolean"

kl_shen_insert_lazyderef :: Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_insert_lazyderef (!kl_V1705) = do !kl_if_0 <- kl_V1705 `pseq` kl_variableP kl_V1705
                                          case kl_if_0 of
                                              Atom (B (True)) -> do let !appl_1 = Atom Nil
                                                                    !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_1
                                                                    !appl_3 <- kl_V1705 `pseq` (appl_2 `pseq` klCons kl_V1705 appl_2)
                                                                    appl_3 `pseq` klCons (ApplC (wrapNamed "shen.lazyderef" kl_shen_lazyderef)) appl_3
                                              Atom (B (False)) -> do let pat_cond_4 kl_V1705 kl_V1705h kl_V1705t = do !appl_5 <- kl_V1705h `pseq` kl_shen_insert_lazyderef kl_V1705h
                                                                                                                      !appl_6 <- kl_V1705t `pseq` kl_shen_insert_lazyderef kl_V1705t
                                                                                                                      appl_5 `pseq` (appl_6 `pseq` klCons appl_5 appl_6)
                                                                         pat_cond_7 = do do return kl_V1705
                                                                      in case kl_V1705 of
                                                                             !(kl_V1705@(Cons (!kl_V1705h)
                                                                                              (!kl_V1705t))) -> pat_cond_4 kl_V1705 kl_V1705h kl_V1705t
                                                                             _ -> pat_cond_7
                                              _ -> throwError "if: expected boolean"

kl_shen_group_clauses :: Core.Types.KLValue ->
                         Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_group_clauses (!kl_V1707) = do let !appl_0 = Atom Nil
                                       !kl_if_1 <- appl_0 `pseq` (kl_V1707 `pseq` eq appl_0 kl_V1707)
                                       case kl_if_1 of
                                           Atom (B (True)) -> do return (Atom Nil)
                                           Atom (B (False)) -> do let pat_cond_2 kl_V1707 kl_V1707h kl_V1707t = do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_Group) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Rest) -> do !appl_5 <- kl_Rest `pseq` kl_shen_group_clauses kl_Rest
                                                                                                                                                                                                                                                  kl_Group `pseq` (appl_5 `pseq` klCons kl_Group appl_5))))
                                                                                                                                                                                   !appl_6 <- kl_V1707 `pseq` (kl_Group `pseq` kl_difference kl_V1707 kl_Group)
                                                                                                                                                                                   appl_6 `pseq` applyWrapper appl_4 [appl_6])))
                                                                                                                   let !appl_7 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_V1707h `pseq` (kl_X `pseq` kl_shen_same_predicateP kl_V1707h kl_X))))
                                                                                                                   !appl_8 <- appl_7 `pseq` (kl_V1707 `pseq` kl_shen_collect appl_7 kl_V1707)
                                                                                                                   appl_8 `pseq` applyWrapper appl_3 [appl_8]
                                                                      pat_cond_9 = do do let !aw_10 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                         applyWrapper aw_10 [ApplC (wrapNamed "shen.group_clauses" kl_shen_group_clauses)]
                                                                   in case kl_V1707 of
                                                                          !(kl_V1707@(Cons (!kl_V1707h)
                                                                                           (!kl_V1707t))) -> pat_cond_2 kl_V1707 kl_V1707h kl_V1707t
                                                                          _ -> pat_cond_9
                                           _ -> throwError "if: expected boolean"

kl_shen_collect :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_collect (!kl_V1712) (!kl_V1713) = do let !appl_0 = Atom Nil
                                             !kl_if_1 <- appl_0 `pseq` (kl_V1713 `pseq` eq appl_0 kl_V1713)
                                             case kl_if_1 of
                                                 Atom (B (True)) -> do return (Atom Nil)
                                                 Atom (B (False)) -> do let pat_cond_2 kl_V1713 kl_V1713h kl_V1713t = do !kl_if_3 <- kl_V1713h `pseq` applyWrapper kl_V1712 [kl_V1713h]
                                                                                                                         case kl_if_3 of
                                                                                                                             Atom (B (True)) -> do !appl_4 <- kl_V1712 `pseq` (kl_V1713t `pseq` kl_shen_collect kl_V1712 kl_V1713t)
                                                                                                                                                   kl_V1713h `pseq` (appl_4 `pseq` klCons kl_V1713h appl_4)
                                                                                                                             Atom (B (False)) -> do do kl_V1712 `pseq` (kl_V1713t `pseq` kl_shen_collect kl_V1712 kl_V1713t)
                                                                                                                             _ -> throwError "if: expected boolean"
                                                                            pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                               applyWrapper aw_6 [ApplC (wrapNamed "shen.collect" kl_shen_collect)]
                                                                         in case kl_V1713 of
                                                                                !(kl_V1713@(Cons (!kl_V1713h)
                                                                                                 (!kl_V1713t))) -> pat_cond_2 kl_V1713 kl_V1713h kl_V1713t
                                                                                _ -> pat_cond_5
                                                 _ -> throwError "if: expected boolean"

kl_shen_same_predicateP :: Core.Types.KLValue ->
                           Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_same_predicateP (!kl_V1732) (!kl_V1733) = do !kl_if_0 <- let pat_cond_1 kl_V1732 kl_V1732h kl_V1732t = do !kl_if_2 <- let pat_cond_3 kl_V1732h kl_V1732hh kl_V1732ht = do let pat_cond_4 kl_V1733 kl_V1733h kl_V1733hh kl_V1733ht kl_V1733t = do return (Atom (B True))
                                                                                                                                                                                      pat_cond_5 = do do return (Atom (B False))
                                                                                                                                                                                   in case kl_V1733 of
                                                                                                                                                                                          !(kl_V1733@(Cons (!(kl_V1733h@(Cons (!kl_V1733hh)
                                                                                                                                                                                                                              (!kl_V1733ht))))
                                                                                                                                                                                                           (!kl_V1733t))) -> pat_cond_4 kl_V1733 kl_V1733h kl_V1733hh kl_V1733ht kl_V1733t
                                                                                                                                                                                          _ -> pat_cond_5
                                                                                                                                  pat_cond_6 = do do return (Atom (B False))
                                                                                                                               in case kl_V1732h of
                                                                                                                                      !(kl_V1732h@(Cons (!kl_V1732hh)
                                                                                                                                                        (!kl_V1732ht))) -> pat_cond_3 kl_V1732h kl_V1732hh kl_V1732ht
                                                                                                                                      _ -> pat_cond_6
                                                                                                                  case kl_if_2 of
                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                      _ -> throwError "if: expected boolean"
                                                                     pat_cond_7 = do do return (Atom (B False))
                                                                  in case kl_V1732 of
                                                                         !(kl_V1732@(Cons (!kl_V1732h)
                                                                                          (!kl_V1732t))) -> pat_cond_1 kl_V1732 kl_V1732h kl_V1732t
                                                                         _ -> pat_cond_7
                                                     case kl_if_0 of
                                                         Atom (B (True)) -> do !appl_8 <- kl_V1732 `pseq` hd kl_V1732
                                                                               !appl_9 <- appl_8 `pseq` hd appl_8
                                                                               !appl_10 <- kl_V1733 `pseq` hd kl_V1733
                                                                               !appl_11 <- appl_10 `pseq` hd appl_10
                                                                               appl_9 `pseq` (appl_11 `pseq` eq appl_9 appl_11)
                                                         Atom (B (False)) -> do do let !aw_12 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                   applyWrapper aw_12 [ApplC (wrapNamed "shen.same_predicate?" kl_shen_same_predicateP)]
                                                         _ -> throwError "if: expected boolean"

kl_shen_compile_prolog_procedure :: Core.Types.KLValue ->
                                    Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_compile_prolog_procedure (!kl_V1735) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_F) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Shen) -> do return kl_Shen)))
                                                                                                              !appl_2 <- kl_F `pseq` (kl_V1735 `pseq` kl_shen_clauses_to_shen kl_F kl_V1735)
                                                                                                              appl_2 `pseq` applyWrapper appl_1 [appl_2])))
                                                  !appl_3 <- kl_V1735 `pseq` kl_shen_procedure_name kl_V1735
                                                  appl_3 `pseq` applyWrapper appl_0 [appl_3]

kl_shen_procedure_name :: Core.Types.KLValue ->
                          Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_procedure_name (!kl_V1749) = do let pat_cond_0 kl_V1749 kl_V1749h kl_V1749hh kl_V1749hhh kl_V1749hht kl_V1749ht kl_V1749t = do return kl_V1749hhh
                                            pat_cond_1 = do do let !aw_2 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                               applyWrapper aw_2 [ApplC (wrapNamed "shen.procedure_name" kl_shen_procedure_name)]
                                         in case kl_V1749 of
                                                !(kl_V1749@(Cons (!(kl_V1749h@(Cons (!(kl_V1749hh@(Cons (!kl_V1749hhh)
                                                                                                        (!kl_V1749hht))))
                                                                                    (!kl_V1749ht))))
                                                                 (!kl_V1749t))) -> pat_cond_0 kl_V1749 kl_V1749h kl_V1749hh kl_V1749hhh kl_V1749hht kl_V1749ht kl_V1749t
                                                _ -> pat_cond_1

kl_shen_clauses_to_shen :: Core.Types.KLValue ->
                           Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_clauses_to_shen (!kl_V1752) (!kl_V1753) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Linear) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Arity) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Parameters) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_AUM_instructions) -> do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Code) -> do let !appl_5 = ApplC (Func "lambda" (Context (\(!kl_ShenDef) -> do return kl_ShenDef)))
                                                                                                                                                                                                                                                                                                                                                                                                     let !appl_6 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_7 <- appl_6 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Continuation")) appl_6
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_8 <- appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_7
                                                                                                                                                                                                                                                                                                                                                                                                     let !appl_9 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_10 <- kl_Code `pseq` (appl_9 `pseq` klCons kl_Code appl_9)
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "->")) appl_10
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_12 <- appl_8 `pseq` (appl_11 `pseq` kl_append appl_8 appl_11)
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_13 <- kl_Parameters `pseq` (appl_12 `pseq` kl_append kl_Parameters appl_12)
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_14 <- kl_V1752 `pseq` (appl_13 `pseq` klCons kl_V1752 appl_13)
                                                                                                                                                                                                                                                                                                                                                                                                     !appl_15 <- appl_14 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "define")) appl_14
                                                                                                                                                                                                                                                                                                                                                                                                     appl_15 `pseq` applyWrapper appl_5 [appl_15])))
                                                                                                                                                                                                                                                                                                                                      let !appl_16 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_aum_to_shen kl_X)))
                                                                                                                                                                                                                                                                                                                                      !appl_17 <- appl_16 `pseq` (kl_AUM_instructions `pseq` kl_map appl_16 kl_AUM_instructions)
                                                                                                                                                                                                                                                                                                                                      !appl_18 <- appl_17 `pseq` kl_shen_nest_disjunct appl_17
                                                                                                                                                                                                                                                                                                                                      !appl_19 <- appl_18 `pseq` kl_shen_catch_cut appl_18
                                                                                                                                                                                                                                                                                                                                      appl_19 `pseq` applyWrapper appl_4 [appl_19])))
                                                                                                                                                                                                                                                           let !appl_20 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` (kl_Parameters `pseq` kl_shen_aum kl_X kl_Parameters))))
                                                                                                                                                                                                                                                           !appl_21 <- appl_20 `pseq` (kl_Linear `pseq` kl_map appl_20 kl_Linear)
                                                                                                                                                                                                                                                           appl_21 `pseq` applyWrapper appl_3 [appl_21])))
                                                                                                                                                                                      !appl_22 <- kl_Arity `pseq` kl_shen_parameters kl_Arity
                                                                                                                                                                                      appl_22 `pseq` applyWrapper appl_2 [appl_22])))
                                                                                                                      let !appl_23 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_head kl_X)))
                                                                                                                      !appl_24 <- appl_23 `pseq` (kl_V1753 `pseq` kl_map appl_23 kl_V1753)
                                                                                                                      !appl_25 <- kl_V1752 `pseq` (appl_24 `pseq` kl_shen_prolog_aritycheck kl_V1752 appl_24)
                                                                                                                      appl_25 `pseq` applyWrapper appl_1 [appl_25])))
                                                     let !appl_26 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_linearise_clause kl_X)))
                                                     !appl_27 <- appl_26 `pseq` (kl_V1753 `pseq` kl_map appl_26 kl_V1753)
                                                     appl_27 `pseq` applyWrapper appl_0 [appl_27]

kl_shen_catch_cut :: Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_catch_cut (!kl_V1755) = do !appl_0 <- kl_V1755 `pseq` kl_shen_occursP (ApplC (wrapNamed "cut" kl_cut)) kl_V1755
                                   !kl_if_1 <- appl_0 `pseq` kl_not appl_0
                                   case kl_if_1 of
                                       Atom (B (True)) -> do return kl_V1755
                                       Atom (B (False)) -> do do let !appl_2 = Atom Nil
                                                                 !appl_3 <- appl_2 `pseq` klCons (ApplC (PL "shen.catchpoint" kl_shen_catchpoint)) appl_2
                                                                 let !appl_4 = Atom Nil
                                                                 !appl_5 <- kl_V1755 `pseq` (appl_4 `pseq` klCons kl_V1755 appl_4)
                                                                 !appl_6 <- appl_5 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Throwcontrol")) appl_5
                                                                 !appl_7 <- appl_6 `pseq` klCons (ApplC (wrapNamed "shen.cutpoint" kl_shen_cutpoint)) appl_6
                                                                 let !appl_8 = Atom Nil
                                                                 !appl_9 <- appl_7 `pseq` (appl_8 `pseq` klCons appl_7 appl_8)
                                                                 !appl_10 <- appl_3 `pseq` (appl_9 `pseq` klCons appl_3 appl_9)
                                                                 !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Throwcontrol")) appl_10
                                                                 appl_11 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_11
                                       _ -> throwError "if: expected boolean"

kl_shen_catchpoint :: Core.Types.KLContext Core.Types.Env
                                           Core.Types.KLValue
kl_shen_catchpoint = do !appl_0 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*catch*"))
                        !appl_1 <- appl_0 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_0
                        appl_1 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*catch*")) appl_1

kl_shen_cutpoint :: Core.Types.KLValue ->
                    Core.Types.KLValue ->
                    Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_cutpoint (!kl_V1763) (!kl_V1764) = do !kl_if_0 <- kl_V1764 `pseq` (kl_V1763 `pseq` eq kl_V1764 kl_V1763)
                                              case kl_if_0 of
                                                  Atom (B (True)) -> do return (Atom (B False))
                                                  Atom (B (False)) -> do do return kl_V1764
                                                  _ -> throwError "if: expected boolean"

kl_shen_nest_disjunct :: Core.Types.KLValue ->
                         Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_nest_disjunct (!kl_V1766) = do !kl_if_0 <- let pat_cond_1 kl_V1766 kl_V1766h kl_V1766t = do let !appl_2 = Atom Nil
                                                                                                    !kl_if_3 <- appl_2 `pseq` (kl_V1766t `pseq` eq appl_2 kl_V1766t)
                                                                                                    case kl_if_3 of
                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                        _ -> throwError "if: expected boolean"
                                                       pat_cond_4 = do do return (Atom (B False))
                                                    in case kl_V1766 of
                                                           !(kl_V1766@(Cons (!kl_V1766h)
                                                                            (!kl_V1766t))) -> pat_cond_1 kl_V1766 kl_V1766h kl_V1766t
                                                           _ -> pat_cond_4
                                       case kl_if_0 of
                                           Atom (B (True)) -> do kl_V1766 `pseq` hd kl_V1766
                                           Atom (B (False)) -> do let pat_cond_5 kl_V1766 kl_V1766h kl_V1766t = do !appl_6 <- kl_V1766t `pseq` kl_shen_nest_disjunct kl_V1766t
                                                                                                                   kl_V1766h `pseq` (appl_6 `pseq` kl_shen_lisp_or kl_V1766h appl_6)
                                                                      pat_cond_7 = do do let !aw_8 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                         applyWrapper aw_8 [ApplC (wrapNamed "shen.nest-disjunct" kl_shen_nest_disjunct)]
                                                                   in case kl_V1766 of
                                                                          !(kl_V1766@(Cons (!kl_V1766h)
                                                                                           (!kl_V1766t))) -> pat_cond_5 kl_V1766 kl_V1766h kl_V1766t
                                                                          _ -> pat_cond_7
                                           _ -> throwError "if: expected boolean"

kl_shen_lisp_or :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_lisp_or (!kl_V1769) (!kl_V1770) = do let !appl_0 = Atom Nil
                                             !appl_1 <- appl_0 `pseq` klCons (Atom (B False)) appl_0
                                             !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Case")) appl_1
                                             !appl_3 <- appl_2 `pseq` klCons (ApplC (wrapNamed "=" eq)) appl_2
                                             let !appl_4 = Atom Nil
                                             !appl_5 <- appl_4 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Case")) appl_4
                                             !appl_6 <- kl_V1770 `pseq` (appl_5 `pseq` klCons kl_V1770 appl_5)
                                             !appl_7 <- appl_3 `pseq` (appl_6 `pseq` klCons appl_3 appl_6)
                                             !appl_8 <- appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_7
                                             let !appl_9 = Atom Nil
                                             !appl_10 <- appl_8 `pseq` (appl_9 `pseq` klCons appl_8 appl_9)
                                             !appl_11 <- kl_V1769 `pseq` (appl_10 `pseq` klCons kl_V1769 appl_10)
                                             !appl_12 <- appl_11 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Case")) appl_11
                                             appl_12 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_12

kl_shen_prolog_aritycheck :: Core.Types.KLValue ->
                             Core.Types.KLValue ->
                             Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_prolog_aritycheck (!kl_V1775) (!kl_V1776) = do !kl_if_0 <- let pat_cond_1 kl_V1776 kl_V1776h kl_V1776t = do let !appl_2 = Atom Nil
                                                                                                                    !kl_if_3 <- appl_2 `pseq` (kl_V1776t `pseq` eq appl_2 kl_V1776t)
                                                                                                                    case kl_if_3 of
                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                        _ -> throwError "if: expected boolean"
                                                                       pat_cond_4 = do do return (Atom (B False))
                                                                    in case kl_V1776 of
                                                                           !(kl_V1776@(Cons (!kl_V1776h)
                                                                                            (!kl_V1776t))) -> pat_cond_1 kl_V1776 kl_V1776h kl_V1776t
                                                                           _ -> pat_cond_4
                                                       case kl_if_0 of
                                                           Atom (B (True)) -> do !appl_5 <- kl_V1776 `pseq` hd kl_V1776
                                                                                 !appl_6 <- appl_5 `pseq` kl_length appl_5
                                                                                 appl_6 `pseq` Primitives.subtract appl_6 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                           Atom (B (False)) -> do let pat_cond_7 kl_V1776 kl_V1776h kl_V1776t kl_V1776th kl_V1776tt = do !appl_8 <- kl_V1776h `pseq` kl_length kl_V1776h
                                                                                                                                                         !appl_9 <- kl_V1776th `pseq` kl_length kl_V1776th
                                                                                                                                                         !kl_if_10 <- appl_8 `pseq` (appl_9 `pseq` eq appl_8 appl_9)
                                                                                                                                                         case kl_if_10 of
                                                                                                                                                             Atom (B (True)) -> do kl_V1775 `pseq` (kl_V1776t `pseq` kl_shen_prolog_aritycheck kl_V1775 kl_V1776t)
                                                                                                                                                             Atom (B (False)) -> do do let !appl_11 = Atom Nil
                                                                                                                                                                                       !appl_12 <- kl_V1775 `pseq` (appl_11 `pseq` klCons kl_V1775 appl_11)
                                                                                                                                                                                       let !aw_13 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                                                                                                                                       !appl_14 <- appl_12 `pseq` applyWrapper aw_13 [appl_12,
                                                                                                                                                                                                                                      Core.Types.Atom (Core.Types.Str "\n"),
                                                                                                                                                                                                                                      Core.Types.Atom (Core.Types.UnboundSym "shen.a")]
                                                                                                                                                                                       !appl_15 <- appl_14 `pseq` cn (Core.Types.Atom (Core.Types.Str "arity error in prolog procedure ")) appl_14
                                                                                                                                                                                       appl_15 `pseq` simpleError appl_15
                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                      pat_cond_16 = do do let !aw_17 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                          applyWrapper aw_17 [ApplC (wrapNamed "shen.prolog-aritycheck" kl_shen_prolog_aritycheck)]
                                                                                   in case kl_V1776 of
                                                                                          !(kl_V1776@(Cons (!kl_V1776h)
                                                                                                           (!(kl_V1776t@(Cons (!kl_V1776th)
                                                                                                                              (!kl_V1776tt)))))) -> pat_cond_7 kl_V1776 kl_V1776h kl_V1776t kl_V1776th kl_V1776tt
                                                                                          _ -> pat_cond_16
                                                           _ -> throwError "if: expected boolean"

kl_shen_linearise_clause :: Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_linearise_clause (!kl_V1778) = do !kl_if_0 <- let pat_cond_1 kl_V1778 kl_V1778h kl_V1778t = do !kl_if_2 <- let pat_cond_3 kl_V1778t kl_V1778th kl_V1778tt = do !kl_if_4 <- let pat_cond_5 = do !kl_if_6 <- let pat_cond_7 kl_V1778tt kl_V1778tth kl_V1778ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                          !kl_if_9 <- appl_8 `pseq` (kl_V1778ttt `pseq` eq appl_8 kl_V1778ttt)
                                                                                                                                                                                                                                                                          case kl_if_9 of
                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                       pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                                    in case kl_V1778tt of
                                                                                                                                                                                                                           !(kl_V1778tt@(Cons (!kl_V1778tth)
                                                                                                                                                                                                                                              (!kl_V1778ttt))) -> pat_cond_7 kl_V1778tt kl_V1778tth kl_V1778ttt
                                                                                                                                                                                                                           _ -> pat_cond_10
                                                                                                                                                                                                       case kl_if_6 of
                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                       pat_cond_11 = do do return (Atom (B False))
                                                                                                                                                                                    in case kl_V1778th of
                                                                                                                                                                                           kl_V1778th@(Atom (UnboundSym ":-")) -> pat_cond_5
                                                                                                                                                                                           kl_V1778th@(ApplC (PL ":-"
                                                                                                                                                                                                                 _)) -> pat_cond_5
                                                                                                                                                                                           kl_V1778th@(ApplC (Func ":-"
                                                                                                                                                                                                                   _)) -> pat_cond_5
                                                                                                                                                                                           _ -> pat_cond_11
                                                                                                                                                                       case kl_if_4 of
                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                       pat_cond_12 = do do return (Atom (B False))
                                                                                                                    in case kl_V1778t of
                                                                                                                           !(kl_V1778t@(Cons (!kl_V1778th)
                                                                                                                                             (!kl_V1778tt))) -> pat_cond_3 kl_V1778t kl_V1778th kl_V1778tt
                                                                                                                           _ -> pat_cond_12
                                                                                                       case kl_if_2 of
                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                           _ -> throwError "if: expected boolean"
                                                          pat_cond_13 = do do return (Atom (B False))
                                                       in case kl_V1778 of
                                                              !(kl_V1778@(Cons (!kl_V1778h)
                                                                               (!kl_V1778t))) -> pat_cond_1 kl_V1778 kl_V1778h kl_V1778t
                                                              _ -> pat_cond_13
                                          case kl_if_0 of
                                              Atom (B (True)) -> do let !appl_14 = ApplC (Func "lambda" (Context (\(!kl_Linear) -> do kl_Linear `pseq` kl_shen_clause_form kl_Linear)))
                                                                    !appl_15 <- kl_V1778 `pseq` hd kl_V1778
                                                                    !appl_16 <- kl_V1778 `pseq` tl kl_V1778
                                                                    !appl_17 <- appl_16 `pseq` tl appl_16
                                                                    !appl_18 <- appl_15 `pseq` (appl_17 `pseq` klCons appl_15 appl_17)
                                                                    !appl_19 <- appl_18 `pseq` kl_shen_linearise appl_18
                                                                    appl_19 `pseq` applyWrapper appl_14 [appl_19]
                                              Atom (B (False)) -> do do let !aw_20 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                        applyWrapper aw_20 [ApplC (wrapNamed "shen.linearise-clause" kl_shen_linearise_clause)]
                                              _ -> throwError "if: expected boolean"

kl_shen_clause_form :: Core.Types.KLValue ->
                       Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_clause_form (!kl_V1780) = do !kl_if_0 <- let pat_cond_1 kl_V1780 kl_V1780h kl_V1780t = do !kl_if_2 <- let pat_cond_3 kl_V1780t kl_V1780th kl_V1780tt = do let !appl_4 = Atom Nil
                                                                                                                                                                  !kl_if_5 <- appl_4 `pseq` (kl_V1780tt `pseq` eq appl_4 kl_V1780tt)
                                                                                                                                                                  case kl_if_5 of
                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                  pat_cond_6 = do do return (Atom (B False))
                                                                                                               in case kl_V1780t of
                                                                                                                      !(kl_V1780t@(Cons (!kl_V1780th)
                                                                                                                                        (!kl_V1780tt))) -> pat_cond_3 kl_V1780t kl_V1780th kl_V1780tt
                                                                                                                      _ -> pat_cond_6
                                                                                                  case kl_if_2 of
                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                      _ -> throwError "if: expected boolean"
                                                     pat_cond_7 = do do return (Atom (B False))
                                                  in case kl_V1780 of
                                                         !(kl_V1780@(Cons (!kl_V1780h)
                                                                          (!kl_V1780t))) -> pat_cond_1 kl_V1780 kl_V1780h kl_V1780t
                                                         _ -> pat_cond_7
                                     case kl_if_0 of
                                         Atom (B (True)) -> do !appl_8 <- kl_V1780 `pseq` hd kl_V1780
                                                               !appl_9 <- appl_8 `pseq` kl_shen_explicit_modes appl_8
                                                               !appl_10 <- kl_V1780 `pseq` tl kl_V1780
                                                               !appl_11 <- appl_10 `pseq` hd appl_10
                                                               !appl_12 <- appl_11 `pseq` kl_shen_cf_help appl_11
                                                               let !appl_13 = Atom Nil
                                                               !appl_14 <- appl_12 `pseq` (appl_13 `pseq` klCons appl_12 appl_13)
                                                               !appl_15 <- appl_14 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym ":-")) appl_14
                                                               appl_9 `pseq` (appl_15 `pseq` klCons appl_9 appl_15)
                                         Atom (B (False)) -> do do let !aw_16 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                   applyWrapper aw_16 [ApplC (wrapNamed "shen.clause_form" kl_shen_clause_form)]
                                         _ -> throwError "if: expected boolean"

kl_shen_explicit_modes :: Core.Types.KLValue ->
                          Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_explicit_modes (!kl_V1782) = do let pat_cond_0 kl_V1782 kl_V1782h kl_V1782t = do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_X) -> do kl_X `pseq` kl_shen_em_help kl_X)))
                                                                                         !appl_2 <- appl_1 `pseq` (kl_V1782t `pseq` kl_map appl_1 kl_V1782t)
                                                                                         kl_V1782h `pseq` (appl_2 `pseq` klCons kl_V1782h appl_2)
                                            pat_cond_3 = do do let !aw_4 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                               applyWrapper aw_4 [ApplC (wrapNamed "shen.explicit_modes" kl_shen_explicit_modes)]
                                         in case kl_V1782 of
                                                !(kl_V1782@(Cons (!kl_V1782h)
                                                                 (!kl_V1782t))) -> pat_cond_0 kl_V1782 kl_V1782h kl_V1782t
                                                _ -> pat_cond_3

kl_shen_em_help :: Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_em_help (!kl_V1784) = do !kl_if_0 <- let pat_cond_1 kl_V1784 kl_V1784h kl_V1784t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1784t kl_V1784th kl_V1784tt = do !kl_if_6 <- let pat_cond_7 kl_V1784tt kl_V1784tth kl_V1784ttt = do let !appl_8 = Atom Nil
                                                                                                                                                                                                                                                                 !kl_if_9 <- appl_8 `pseq` (kl_V1784ttt `pseq` eq appl_8 kl_V1784ttt)
                                                                                                                                                                                                                                                                 case kl_if_9 of
                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                              pat_cond_10 = do do return (Atom (B False))
                                                                                                                                                                                                           in case kl_V1784tt of
                                                                                                                                                                                                                  !(kl_V1784tt@(Cons (!kl_V1784tth)
                                                                                                                                                                                                                                     (!kl_V1784ttt))) -> pat_cond_7 kl_V1784tt kl_V1784tth kl_V1784ttt
                                                                                                                                                                                                                  _ -> pat_cond_10
                                                                                                                                                                                              case kl_if_6 of
                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                              pat_cond_11 = do do return (Atom (B False))
                                                                                                                                           in case kl_V1784t of
                                                                                                                                                  !(kl_V1784t@(Cons (!kl_V1784th)
                                                                                                                                                                    (!kl_V1784tt))) -> pat_cond_5 kl_V1784t kl_V1784th kl_V1784tt
                                                                                                                                                  _ -> pat_cond_11
                                                                                                                              case kl_if_4 of
                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                              pat_cond_12 = do do return (Atom (B False))
                                                                                                           in case kl_V1784h of
                                                                                                                  kl_V1784h@(Atom (UnboundSym "mode")) -> pat_cond_3
                                                                                                                  kl_V1784h@(ApplC (PL "mode"
                                                                                                                                       _)) -> pat_cond_3
                                                                                                                  kl_V1784h@(ApplC (Func "mode"
                                                                                                                                         _)) -> pat_cond_3
                                                                                                                  _ -> pat_cond_12
                                                                                              case kl_if_2 of
                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                  _ -> throwError "if: expected boolean"
                                                 pat_cond_13 = do do return (Atom (B False))
                                              in case kl_V1784 of
                                                     !(kl_V1784@(Cons (!kl_V1784h)
                                                                      (!kl_V1784t))) -> pat_cond_1 kl_V1784 kl_V1784h kl_V1784t
                                                     _ -> pat_cond_13
                                 case kl_if_0 of
                                     Atom (B (True)) -> do return kl_V1784
                                     Atom (B (False)) -> do do let !appl_14 = Atom Nil
                                                               !appl_15 <- appl_14 `pseq` klCons (ApplC (wrapNamed "+" add)) appl_14
                                                               !appl_16 <- kl_V1784 `pseq` (appl_15 `pseq` klCons kl_V1784 appl_15)
                                                               appl_16 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "mode")) appl_16
                                     _ -> throwError "if: expected boolean"

kl_shen_cf_help :: Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_cf_help (!kl_V1786) = do !kl_if_0 <- let pat_cond_1 kl_V1786 kl_V1786h kl_V1786t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1786t kl_V1786th kl_V1786tt = do !kl_if_6 <- let pat_cond_7 kl_V1786th kl_V1786thh kl_V1786tht = do !kl_if_8 <- let pat_cond_9 = do !kl_if_10 <- let pat_cond_11 kl_V1786tht kl_V1786thth kl_V1786thtt = do !kl_if_12 <- let pat_cond_13 kl_V1786thtt kl_V1786thtth kl_V1786thttt = do let !appl_14 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_15 <- appl_14 `pseq` (kl_V1786thttt `pseq` eq appl_14 kl_V1786thttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_16 <- case kl_if_15 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do !kl_if_17 <- let pat_cond_18 kl_V1786tt kl_V1786tth kl_V1786ttt = do let !appl_19 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                !kl_if_20 <- appl_19 `pseq` (kl_V1786ttt `pseq` eq appl_19 kl_V1786ttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_20 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_21 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1786tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                !(kl_V1786tt@(Cons (!kl_V1786tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1786ttt))) -> pat_cond_18 kl_V1786tt kl_V1786tth kl_V1786ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_21
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_17 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_16 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                          pat_cond_22 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                       in case kl_V1786thtt of
                                                                                                                                                                                                                                                                                                                                                                                              !(kl_V1786thtt@(Cons (!kl_V1786thtth)
                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1786thttt))) -> pat_cond_13 kl_V1786thtt kl_V1786thtth kl_V1786thttt
                                                                                                                                                                                                                                                                                                                                                                                              _ -> pat_cond_22
                                                                                                                                                                                                                                                                                                                                                                         case kl_if_12 of
                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                  pat_cond_23 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                               in case kl_V1786tht of
                                                                                                                                                                                                                                                                                                                      !(kl_V1786tht@(Cons (!kl_V1786thth)
                                                                                                                                                                                                                                                                                                                                          (!kl_V1786thtt))) -> pat_cond_11 kl_V1786tht kl_V1786thth kl_V1786thtt
                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_23
                                                                                                                                                                                                                                                                                                 case kl_if_10 of
                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                 pat_cond_24 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                              in case kl_V1786thh of
                                                                                                                                                                                                                                                                                     kl_V1786thh@(Atom (UnboundSym "=")) -> pat_cond_9
                                                                                                                                                                                                                                                                                     kl_V1786thh@(ApplC (PL "="
                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                     kl_V1786thh@(ApplC (Func "="
                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                     _ -> pat_cond_24
                                                                                                                                                                                                                                                                 case kl_if_8 of
                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                              pat_cond_25 = do do return (Atom (B False))
                                                                                                                                                                                                           in case kl_V1786th of
                                                                                                                                                                                                                  !(kl_V1786th@(Cons (!kl_V1786thh)
                                                                                                                                                                                                                                     (!kl_V1786tht))) -> pat_cond_7 kl_V1786th kl_V1786thh kl_V1786tht
                                                                                                                                                                                                                  _ -> pat_cond_25
                                                                                                                                                                                              case kl_if_6 of
                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                              pat_cond_26 = do do return (Atom (B False))
                                                                                                                                           in case kl_V1786t of
                                                                                                                                                  !(kl_V1786t@(Cons (!kl_V1786th)
                                                                                                                                                                    (!kl_V1786tt))) -> pat_cond_5 kl_V1786t kl_V1786th kl_V1786tt
                                                                                                                                                  _ -> pat_cond_26
                                                                                                                              case kl_if_4 of
                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                              pat_cond_27 = do do return (Atom (B False))
                                                                                                           in case kl_V1786h of
                                                                                                                  kl_V1786h@(Atom (UnboundSym "where")) -> pat_cond_3
                                                                                                                  kl_V1786h@(ApplC (PL "where"
                                                                                                                                       _)) -> pat_cond_3
                                                                                                                  kl_V1786h@(ApplC (Func "where"
                                                                                                                                         _)) -> pat_cond_3
                                                                                                                  _ -> pat_cond_27
                                                                                              case kl_if_2 of
                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                  _ -> throwError "if: expected boolean"
                                                 pat_cond_28 = do do return (Atom (B False))
                                              in case kl_V1786 of
                                                     !(kl_V1786@(Cons (!kl_V1786h)
                                                                      (!kl_V1786t))) -> pat_cond_1 kl_V1786 kl_V1786h kl_V1786t
                                                     _ -> pat_cond_28
                                 case kl_if_0 of
                                     Atom (B (True)) -> do !kl_if_29 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*occurs*"))
                                                           !appl_30 <- case kl_if_29 of
                                                                           Atom (B (True)) -> do return (ApplC (wrapNamed "unify!" kl_unifyExcl))
                                                                           Atom (B (False)) -> do do return (ApplC (wrapNamed "unify" kl_unify))
                                                                           _ -> throwError "if: expected boolean"
                                                           !appl_31 <- kl_V1786 `pseq` tl kl_V1786
                                                           !appl_32 <- appl_31 `pseq` hd appl_31
                                                           !appl_33 <- appl_32 `pseq` tl appl_32
                                                           !appl_34 <- appl_30 `pseq` (appl_33 `pseq` klCons appl_30 appl_33)
                                                           !appl_35 <- kl_V1786 `pseq` tl kl_V1786
                                                           !appl_36 <- appl_35 `pseq` tl appl_35
                                                           !appl_37 <- appl_36 `pseq` hd appl_36
                                                           !appl_38 <- appl_37 `pseq` kl_shen_cf_help appl_37
                                                           appl_34 `pseq` (appl_38 `pseq` klCons appl_34 appl_38)
                                     Atom (B (False)) -> do do return kl_V1786
                                     _ -> throwError "if: expected boolean"

kl_occurs_check :: Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_occurs_check (!kl_V1792) = do let pat_cond_0 = do klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*occurs*")) (Atom (B True))
                                     pat_cond_1 = do klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*occurs*")) (Atom (B False))
                                     pat_cond_2 = do do simpleError (Core.Types.Atom (Core.Types.Str "occurs-check expects + or -\n"))
                                  in case kl_V1792 of
                                         kl_V1792@(Atom (UnboundSym "+")) -> pat_cond_0
                                         kl_V1792@(ApplC (PL "+" _)) -> pat_cond_0
                                         kl_V1792@(ApplC (Func "+" _)) -> pat_cond_0
                                         kl_V1792@(Atom (UnboundSym "-")) -> pat_cond_1
                                         kl_V1792@(ApplC (PL "-" _)) -> pat_cond_1
                                         kl_V1792@(ApplC (Func "-" _)) -> pat_cond_1
                                         _ -> pat_cond_2

kl_shen_aum :: Core.Types.KLValue ->
               Core.Types.KLValue ->
               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_aum (!kl_V1795) (!kl_V1796) = do !kl_if_0 <- let pat_cond_1 kl_V1795 kl_V1795h kl_V1795t = do !kl_if_2 <- let pat_cond_3 kl_V1795h kl_V1795hh kl_V1795ht = do !kl_if_4 <- let pat_cond_5 kl_V1795t kl_V1795th kl_V1795tt = do !kl_if_6 <- let pat_cond_7 = do !kl_if_8 <- let pat_cond_9 kl_V1795tt kl_V1795tth kl_V1795ttt = do let !appl_10 = Atom Nil
                                                                                                                                                                                                                                                                                                                                         !kl_if_11 <- appl_10 `pseq` (kl_V1795ttt `pseq` eq appl_10 kl_V1795ttt)
                                                                                                                                                                                                                                                                                                                                         case kl_if_11 of
                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                      pat_cond_12 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                   in case kl_V1795tt of
                                                                                                                                                                                                                                                                                          !(kl_V1795tt@(Cons (!kl_V1795tth)
                                                                                                                                                                                                                                                                                                             (!kl_V1795ttt))) -> pat_cond_9 kl_V1795tt kl_V1795tth kl_V1795ttt
                                                                                                                                                                                                                                                                                          _ -> pat_cond_12
                                                                                                                                                                                                                                                                      case kl_if_8 of
                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                      pat_cond_13 = do do return (Atom (B False))
                                                                                                                                                                                                                                                   in case kl_V1795th of
                                                                                                                                                                                                                                                          kl_V1795th@(Atom (UnboundSym ":-")) -> pat_cond_7
                                                                                                                                                                                                                                                          kl_V1795th@(ApplC (PL ":-"
                                                                                                                                                                                                                                                                                _)) -> pat_cond_7
                                                                                                                                                                                                                                                          kl_V1795th@(ApplC (Func ":-"
                                                                                                                                                                                                                                                                                  _)) -> pat_cond_7
                                                                                                                                                                                                                                                          _ -> pat_cond_13
                                                                                                                                                                                                                                      case kl_if_6 of
                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                      pat_cond_14 = do do return (Atom (B False))
                                                                                                                                                                                   in case kl_V1795t of
                                                                                                                                                                                          !(kl_V1795t@(Cons (!kl_V1795th)
                                                                                                                                                                                                            (!kl_V1795tt))) -> pat_cond_5 kl_V1795t kl_V1795th kl_V1795tt
                                                                                                                                                                                          _ -> pat_cond_14
                                                                                                                                                                      case kl_if_4 of
                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                      pat_cond_15 = do do return (Atom (B False))
                                                                                                                   in case kl_V1795h of
                                                                                                                          !(kl_V1795h@(Cons (!kl_V1795hh)
                                                                                                                                            (!kl_V1795ht))) -> pat_cond_3 kl_V1795h kl_V1795hh kl_V1795ht
                                                                                                                          _ -> pat_cond_15
                                                                                                      case kl_if_2 of
                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                          _ -> throwError "if: expected boolean"
                                                         pat_cond_16 = do do return (Atom (B False))
                                                      in case kl_V1795 of
                                                             !(kl_V1795@(Cons (!kl_V1795h)
                                                                              (!kl_V1795t))) -> pat_cond_1 kl_V1795 kl_V1795h kl_V1795t
                                                             _ -> pat_cond_16
                                         case kl_if_0 of
                                             Atom (B (True)) -> do let !appl_17 = ApplC (Func "lambda" (Context (\(!kl_MuApplication) -> do kl_MuApplication `pseq` kl_shen_mu_reduction kl_MuApplication (ApplC (wrapNamed "+" add)))))
                                                                   !appl_18 <- kl_V1795 `pseq` hd kl_V1795
                                                                   !appl_19 <- appl_18 `pseq` tl appl_18
                                                                   !appl_20 <- kl_V1795 `pseq` hd kl_V1795
                                                                   !appl_21 <- appl_20 `pseq` tl appl_20
                                                                   !appl_22 <- kl_V1795 `pseq` tl kl_V1795
                                                                   !appl_23 <- appl_22 `pseq` tl appl_22
                                                                   !appl_24 <- appl_23 `pseq` hd appl_23
                                                                   !appl_25 <- appl_21 `pseq` (appl_24 `pseq` kl_shen_continuation_call appl_21 appl_24)
                                                                   let !appl_26 = Atom Nil
                                                                   !appl_27 <- appl_25 `pseq` (appl_26 `pseq` klCons appl_25 appl_26)
                                                                   !appl_28 <- appl_19 `pseq` (appl_27 `pseq` klCons appl_19 appl_27)
                                                                   !appl_29 <- appl_28 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_28
                                                                   !appl_30 <- appl_29 `pseq` (kl_V1796 `pseq` kl_shen_make_mu_application appl_29 kl_V1796)
                                                                   appl_30 `pseq` applyWrapper appl_17 [appl_30]
                                             Atom (B (False)) -> do do let !aw_31 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                       applyWrapper aw_31 [ApplC (wrapNamed "shen.aum" kl_shen_aum)]
                                             _ -> throwError "if: expected boolean"

kl_shen_continuation_call :: Core.Types.KLValue ->
                             Core.Types.KLValue ->
                             Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_continuation_call (!kl_V1799) (!kl_V1800) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_VTerms) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_VBody) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Free) -> do kl_Free `pseq` (kl_V1800 `pseq` kl_shen_cc_help kl_Free kl_V1800))))
                                                                                                                                                                                        !appl_3 <- kl_VBody `pseq` (kl_VTerms `pseq` kl_difference kl_VBody kl_VTerms)
                                                                                                                                                                                        !appl_4 <- appl_3 `pseq` kl_remove (Core.Types.Atom (Core.Types.UnboundSym "Throwcontrol")) appl_3
                                                                                                                                                                                        appl_4 `pseq` applyWrapper appl_2 [appl_4])))
                                                                                                                        !appl_5 <- kl_V1800 `pseq` kl_shen_extract_vars kl_V1800
                                                                                                                        appl_5 `pseq` applyWrapper appl_1 [appl_5])))
                                                       !appl_6 <- kl_V1799 `pseq` kl_shen_extract_vars kl_V1799
                                                       !appl_7 <- appl_6 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_6
                                                       appl_7 `pseq` applyWrapper appl_0 [appl_7]

kl_remove :: Core.Types.KLValue ->
             Core.Types.KLValue ->
             Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_remove (!kl_V1803) (!kl_V1804) = do let !appl_0 = Atom Nil
                                       kl_V1803 `pseq` (kl_V1804 `pseq` (appl_0 `pseq` kl_shen_remove_h kl_V1803 kl_V1804 appl_0))

kl_shen_remove_h :: Core.Types.KLValue ->
                    Core.Types.KLValue ->
                    Core.Types.KLValue ->
                    Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_remove_h (!kl_V1811) (!kl_V1812) (!kl_V1813) = do let !appl_0 = Atom Nil
                                                          !kl_if_1 <- appl_0 `pseq` (kl_V1812 `pseq` eq appl_0 kl_V1812)
                                                          case kl_if_1 of
                                                              Atom (B (True)) -> do kl_V1813 `pseq` kl_reverse kl_V1813
                                                              Atom (B (False)) -> do let pat_cond_2 kl_V1812 kl_V1812h kl_V1812t = do kl_V1812h `pseq` (kl_V1812t `pseq` (kl_V1813 `pseq` kl_shen_remove_h kl_V1812h kl_V1812t kl_V1813))
                                                                                         pat_cond_3 kl_V1812 kl_V1812h kl_V1812t = do !appl_4 <- kl_V1812h `pseq` (kl_V1813 `pseq` klCons kl_V1812h kl_V1813)
                                                                                                                                      kl_V1811 `pseq` (kl_V1812t `pseq` (appl_4 `pseq` kl_shen_remove_h kl_V1811 kl_V1812t appl_4))
                                                                                         pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                            applyWrapper aw_6 [ApplC (wrapNamed "shen.remove-h" kl_shen_remove_h)]
                                                                                      in case kl_V1812 of
                                                                                             !(kl_V1812@(Cons (!kl_V1812h)
                                                                                                              (!kl_V1812t))) | eqCore kl_V1812h kl_V1811 -> pat_cond_2 kl_V1812 kl_V1812h kl_V1812t
                                                                                             !(kl_V1812@(Cons (!kl_V1812h)
                                                                                                              (!kl_V1812t))) -> pat_cond_3 kl_V1812 kl_V1812h kl_V1812t
                                                                                             _ -> pat_cond_5
                                                              _ -> throwError "if: expected boolean"

kl_shen_cc_help :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_cc_help (!kl_V1816) (!kl_V1817) = do let !appl_0 = Atom Nil
                                             !kl_if_1 <- appl_0 `pseq` (kl_V1816 `pseq` eq appl_0 kl_V1816)
                                             !kl_if_2 <- case kl_if_1 of
                                                             Atom (B (True)) -> do let !appl_3 = Atom Nil
                                                                                   !kl_if_4 <- appl_3 `pseq` (kl_V1817 `pseq` eq appl_3 kl_V1817)
                                                                                   case kl_if_4 of
                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                       _ -> throwError "if: expected boolean"
                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                             _ -> throwError "if: expected boolean"
                                             case kl_if_2 of
                                                 Atom (B (True)) -> do let !appl_5 = Atom Nil
                                                                       !appl_6 <- appl_5 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.stack")) appl_5
                                                                       !appl_7 <- appl_6 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_6
                                                                       appl_7 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.pop")) appl_7
                                                 Atom (B (False)) -> do let !appl_8 = Atom Nil
                                                                        !kl_if_9 <- appl_8 `pseq` (kl_V1817 `pseq` eq appl_8 kl_V1817)
                                                                        case kl_if_9 of
                                                                            Atom (B (True)) -> do let !appl_10 = Atom Nil
                                                                                                  !appl_11 <- appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.stack")) appl_10
                                                                                                  !appl_12 <- appl_11 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_11
                                                                                                  !appl_13 <- appl_12 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.pop")) appl_12
                                                                                                  let !appl_14 = Atom Nil
                                                                                                  !appl_15 <- appl_13 `pseq` (appl_14 `pseq` klCons appl_13 appl_14)
                                                                                                  !appl_16 <- appl_15 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_15
                                                                                                  !appl_17 <- appl_16 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "and")) appl_16
                                                                                                  !appl_18 <- kl_V1816 `pseq` (appl_17 `pseq` klCons kl_V1816 appl_17)
                                                                                                  !appl_19 <- appl_18 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_18
                                                                                                  !appl_20 <- appl_19 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.variables")) appl_19
                                                                                                  !appl_21 <- appl_20 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_20
                                                                                                  appl_21 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.rename")) appl_21
                                                                            Atom (B (False)) -> do let !appl_22 = Atom Nil
                                                                                                   !kl_if_23 <- appl_22 `pseq` (kl_V1816 `pseq` eq appl_22 kl_V1816)
                                                                                                   case kl_if_23 of
                                                                                                       Atom (B (True)) -> do let !appl_24 = Atom Nil
                                                                                                                             !appl_25 <- kl_V1817 `pseq` (appl_24 `pseq` klCons kl_V1817 appl_24)
                                                                                                                             !appl_26 <- appl_25 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.continuation")) appl_25
                                                                                                                             !appl_27 <- appl_26 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_26
                                                                                                                             appl_27 `pseq` klCons (ApplC (wrapNamed "call" kl_call)) appl_27
                                                                                                       Atom (B (False)) -> do do let !appl_28 = Atom Nil
                                                                                                                                 !appl_29 <- kl_V1817 `pseq` (appl_28 `pseq` klCons kl_V1817 appl_28)
                                                                                                                                 !appl_30 <- appl_29 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.continuation")) appl_29
                                                                                                                                 !appl_31 <- appl_30 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_30
                                                                                                                                 !appl_32 <- appl_31 `pseq` klCons (ApplC (wrapNamed "call" kl_call)) appl_31
                                                                                                                                 let !appl_33 = Atom Nil
                                                                                                                                 !appl_34 <- appl_32 `pseq` (appl_33 `pseq` klCons appl_32 appl_33)
                                                                                                                                 !appl_35 <- appl_34 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_34
                                                                                                                                 !appl_36 <- appl_35 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "and")) appl_35
                                                                                                                                 !appl_37 <- kl_V1816 `pseq` (appl_36 `pseq` klCons kl_V1816 appl_36)
                                                                                                                                 !appl_38 <- appl_37 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_37
                                                                                                                                 !appl_39 <- appl_38 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.variables")) appl_38
                                                                                                                                 !appl_40 <- appl_39 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_39
                                                                                                                                 appl_40 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.rename")) appl_40
                                                                                                       _ -> throwError "if: expected boolean"
                                                                            _ -> throwError "if: expected boolean"
                                                 _ -> throwError "if: expected boolean"

kl_shen_make_mu_application :: Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_make_mu_application (!kl_V1820) (!kl_V1821) = do !kl_if_0 <- let pat_cond_1 kl_V1820 kl_V1820h kl_V1820t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1820t kl_V1820th kl_V1820tt = do let !appl_6 = Atom Nil
                                                                                                                                                                                                                      !kl_if_7 <- appl_6 `pseq` (kl_V1820th `pseq` eq appl_6 kl_V1820th)
                                                                                                                                                                                                                      !kl_if_8 <- case kl_if_7 of
                                                                                                                                                                                                                                      Atom (B (True)) -> do !kl_if_9 <- let pat_cond_10 kl_V1820tt kl_V1820tth kl_V1820ttt = do let !appl_11 = Atom Nil
                                                                                                                                                                                                                                                                                                                                !kl_if_12 <- appl_11 `pseq` (kl_V1820ttt `pseq` eq appl_11 kl_V1820ttt)
                                                                                                                                                                                                                                                                                                                                !kl_if_13 <- case kl_if_12 of
                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do let !appl_14 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                       !kl_if_15 <- appl_14 `pseq` (kl_V1821 `pseq` eq appl_14 kl_V1821)
                                                                                                                                                                                                                                                                                                                                                                       case kl_if_15 of
                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                case kl_if_13 of
                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                            pat_cond_16 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                         in case kl_V1820tt of
                                                                                                                                                                                                                                                                                !(kl_V1820tt@(Cons (!kl_V1820tth)
                                                                                                                                                                                                                                                                                                   (!kl_V1820ttt))) -> pat_cond_10 kl_V1820tt kl_V1820tth kl_V1820ttt
                                                                                                                                                                                                                                                                                _ -> pat_cond_16
                                                                                                                                                                                                                                                            case kl_if_9 of
                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                      case kl_if_8 of
                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                      pat_cond_17 = do do return (Atom (B False))
                                                                                                                                                                   in case kl_V1820t of
                                                                                                                                                                          !(kl_V1820t@(Cons (!kl_V1820th)
                                                                                                                                                                                            (!kl_V1820tt))) -> pat_cond_5 kl_V1820t kl_V1820th kl_V1820tt
                                                                                                                                                                          _ -> pat_cond_17
                                                                                                                                                      case kl_if_4 of
                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                      pat_cond_18 = do do return (Atom (B False))
                                                                                                                                   in case kl_V1820h of
                                                                                                                                          kl_V1820h@(Atom (UnboundSym "shen.mu")) -> pat_cond_3
                                                                                                                                          kl_V1820h@(ApplC (PL "shen.mu"
                                                                                                                                                               _)) -> pat_cond_3
                                                                                                                                          kl_V1820h@(ApplC (Func "shen.mu"
                                                                                                                                                                 _)) -> pat_cond_3
                                                                                                                                          _ -> pat_cond_18
                                                                                                                      case kl_if_2 of
                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                          _ -> throwError "if: expected boolean"
                                                                         pat_cond_19 = do do return (Atom (B False))
                                                                      in case kl_V1820 of
                                                                             !(kl_V1820@(Cons (!kl_V1820h)
                                                                                              (!kl_V1820t))) -> pat_cond_1 kl_V1820 kl_V1820h kl_V1820t
                                                                             _ -> pat_cond_19
                                                         case kl_if_0 of
                                                             Atom (B (True)) -> do !appl_20 <- kl_V1820 `pseq` tl kl_V1820
                                                                                   !appl_21 <- appl_20 `pseq` tl appl_20
                                                                                   appl_21 `pseq` hd appl_21
                                                             Atom (B (False)) -> do !kl_if_22 <- let pat_cond_23 kl_V1820 kl_V1820h kl_V1820t = do !kl_if_24 <- let pat_cond_25 = do !kl_if_26 <- let pat_cond_27 kl_V1820t kl_V1820th kl_V1820tt = do !kl_if_28 <- let pat_cond_29 kl_V1820th kl_V1820thh kl_V1820tht = do !kl_if_30 <- let pat_cond_31 kl_V1820tt kl_V1820tth kl_V1820ttt = do let !appl_32 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                 !kl_if_33 <- appl_32 `pseq` (kl_V1820ttt `pseq` eq appl_32 kl_V1820ttt)
                                                                                                                                                                                                                                                                                                                                                                                                 !kl_if_34 <- case kl_if_33 of
                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do let pat_cond_35 kl_V1821 kl_V1821h kl_V1821t = do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_36 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1821 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                !(kl_V1821@(Cons (!kl_V1821h)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (!kl_V1821t))) -> pat_cond_35 kl_V1821 kl_V1821h kl_V1821t
                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_36
                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_34 of
                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                             pat_cond_37 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                          in case kl_V1820tt of
                                                                                                                                                                                                                                                                                                                                                 !(kl_V1820tt@(Cons (!kl_V1820tth)
                                                                                                                                                                                                                                                                                                                                                                    (!kl_V1820ttt))) -> pat_cond_31 kl_V1820tt kl_V1820tth kl_V1820ttt
                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_37
                                                                                                                                                                                                                                                                                                                            case kl_if_30 of
                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                        pat_cond_38 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                     in case kl_V1820th of
                                                                                                                                                                                                                                                                            !(kl_V1820th@(Cons (!kl_V1820thh)
                                                                                                                                                                                                                                                                                               (!kl_V1820tht))) -> pat_cond_29 kl_V1820th kl_V1820thh kl_V1820tht
                                                                                                                                                                                                                                                                            _ -> pat_cond_38
                                                                                                                                                                                                                                                       case kl_if_28 of
                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                      pat_cond_39 = do do return (Atom (B False))
                                                                                                                                                                                                   in case kl_V1820t of
                                                                                                                                                                                                          !(kl_V1820t@(Cons (!kl_V1820th)
                                                                                                                                                                                                                            (!kl_V1820tt))) -> pat_cond_27 kl_V1820t kl_V1820th kl_V1820tt
                                                                                                                                                                                                          _ -> pat_cond_39
                                                                                                                                                                                     case kl_if_26 of
                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                    pat_cond_40 = do do return (Atom (B False))
                                                                                                                                                                 in case kl_V1820h of
                                                                                                                                                                        kl_V1820h@(Atom (UnboundSym "shen.mu")) -> pat_cond_25
                                                                                                                                                                        kl_V1820h@(ApplC (PL "shen.mu"
                                                                                                                                                                                             _)) -> pat_cond_25
                                                                                                                                                                        kl_V1820h@(ApplC (Func "shen.mu"
                                                                                                                                                                                               _)) -> pat_cond_25
                                                                                                                                                                        _ -> pat_cond_40
                                                                                                                                                   case kl_if_24 of
                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                     pat_cond_41 = do do return (Atom (B False))
                                                                                                  in case kl_V1820 of
                                                                                                         !(kl_V1820@(Cons (!kl_V1820h)
                                                                                                                          (!kl_V1820t))) -> pat_cond_23 kl_V1820 kl_V1820h kl_V1820t
                                                                                                         _ -> pat_cond_41
                                                                                    case kl_if_22 of
                                                                                        Atom (B (True)) -> do !appl_42 <- kl_V1820 `pseq` tl kl_V1820
                                                                                                              !appl_43 <- appl_42 `pseq` hd appl_42
                                                                                                              !appl_44 <- appl_43 `pseq` hd appl_43
                                                                                                              !appl_45 <- kl_V1820 `pseq` tl kl_V1820
                                                                                                              !appl_46 <- appl_45 `pseq` hd appl_45
                                                                                                              !appl_47 <- appl_46 `pseq` tl appl_46
                                                                                                              !appl_48 <- kl_V1820 `pseq` tl kl_V1820
                                                                                                              !appl_49 <- appl_48 `pseq` tl appl_48
                                                                                                              !appl_50 <- appl_47 `pseq` (appl_49 `pseq` klCons appl_47 appl_49)
                                                                                                              !appl_51 <- appl_50 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_50
                                                                                                              !appl_52 <- kl_V1821 `pseq` tl kl_V1821
                                                                                                              !appl_53 <- appl_51 `pseq` (appl_52 `pseq` kl_shen_make_mu_application appl_51 appl_52)
                                                                                                              let !appl_54 = Atom Nil
                                                                                                              !appl_55 <- appl_53 `pseq` (appl_54 `pseq` klCons appl_53 appl_54)
                                                                                                              !appl_56 <- appl_44 `pseq` (appl_55 `pseq` klCons appl_44 appl_55)
                                                                                                              !appl_57 <- appl_56 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_56
                                                                                                              !appl_58 <- kl_V1821 `pseq` hd kl_V1821
                                                                                                              let !appl_59 = Atom Nil
                                                                                                              !appl_60 <- appl_58 `pseq` (appl_59 `pseq` klCons appl_58 appl_59)
                                                                                                              appl_57 `pseq` (appl_60 `pseq` klCons appl_57 appl_60)
                                                                                        Atom (B (False)) -> do do let !aw_61 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                  applyWrapper aw_61 [ApplC (wrapNamed "shen.make_mu_application" kl_shen_make_mu_application)]
                                                                                        _ -> throwError "if: expected boolean"
                                                             _ -> throwError "if: expected boolean"

kl_shen_mu_reduction :: Core.Types.KLValue ->
                        Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_mu_reduction (!kl_V1830) (!kl_V1831) = do !kl_if_0 <- let pat_cond_1 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_2 <- let pat_cond_3 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_4 <- let pat_cond_5 = do !kl_if_6 <- let pat_cond_7 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_8 <- let pat_cond_9 kl_V1830hth kl_V1830hthh kl_V1830htht = do !kl_if_10 <- let pat_cond_11 = do !kl_if_12 <- let pat_cond_13 kl_V1830htht kl_V1830hthth kl_V1830hthtt = do !kl_if_14 <- let pat_cond_15 kl_V1830hthtt kl_V1830hthtth kl_V1830hthttt = do let !appl_16 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_17 <- appl_16 `pseq` (kl_V1830hthttt `pseq` eq appl_16 kl_V1830hthttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_18 <- case kl_if_17 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do !kl_if_19 <- let pat_cond_20 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_21 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !kl_if_22 <- appl_21 `pseq` (kl_V1830httt `pseq` eq appl_21 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !kl_if_23 <- case kl_if_22 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do !kl_if_24 <- let pat_cond_25 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_26 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !kl_if_27 <- appl_26 `pseq` (kl_V1830tt `pseq` eq appl_26 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_27 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          pat_cond_28 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1830tt))) -> pat_cond_25 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> pat_cond_28
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_24 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_23 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_29 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1830httt))) -> pat_cond_20 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_29
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_19 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_18 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_30 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1830hthtt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1830hthtt@(Cons (!kl_V1830hthtth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1830hthttt))) -> pat_cond_15 kl_V1830hthtt kl_V1830hthtth kl_V1830hthttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_30
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     case kl_if_14 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_31 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1830htht of
                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1830htht@(Cons (!kl_V1830hthth)
                                                                                                                                                                                                                                                                                                                                                                                                                                    (!kl_V1830hthtt))) -> pat_cond_13 kl_V1830htht kl_V1830hthth kl_V1830hthtt
                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_31
                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_12 of
                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                         pat_cond_32 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1830hthh of
                                                                                                                                                                                                                                                                                                                                                                             kl_V1830hthh@(Atom (UnboundSym "mode")) -> pat_cond_11
                                                                                                                                                                                                                                                                                                                                                                             kl_V1830hthh@(ApplC (PL "mode"
                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_11
                                                                                                                                                                                                                                                                                                                                                                             kl_V1830hthh@(ApplC (Func "mode"
                                                                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_11
                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_32
                                                                                                                                                                                                                                                                                                                                                        case kl_if_10 of
                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                  pat_cond_33 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                               in case kl_V1830hth of
                                                                                                                                                                                                                                                                                                      !(kl_V1830hth@(Cons (!kl_V1830hthh)
                                                                                                                                                                                                                                                                                                                          (!kl_V1830htht))) -> pat_cond_9 kl_V1830hth kl_V1830hthh kl_V1830htht
                                                                                                                                                                                                                                                                                                      _ -> pat_cond_33
                                                                                                                                                                                                                                                                                  case kl_if_8 of
                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                               pat_cond_34 = do do return (Atom (B False))
                                                                                                                                                                                                                            in case kl_V1830ht of
                                                                                                                                                                                                                                   !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                      (!kl_V1830htt))) -> pat_cond_7 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                   _ -> pat_cond_34
                                                                                                                                                                                                               case kl_if_6 of
                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                               pat_cond_35 = do do return (Atom (B False))
                                                                                                                                                                                            in case kl_V1830hh of
                                                                                                                                                                                                   kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_5
                                                                                                                                                                                                   kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                         _)) -> pat_cond_5
                                                                                                                                                                                                   kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                           _)) -> pat_cond_5
                                                                                                                                                                                                   _ -> pat_cond_35
                                                                                                                                                                               case kl_if_4 of
                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                               pat_cond_36 = do do return (Atom (B False))
                                                                                                                            in case kl_V1830h of
                                                                                                                                   !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                     (!kl_V1830ht))) -> pat_cond_3 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                   _ -> pat_cond_36
                                                                                                               case kl_if_2 of
                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                   _ -> throwError "if: expected boolean"
                                                                  pat_cond_37 = do do return (Atom (B False))
                                                               in case kl_V1830 of
                                                                      !(kl_V1830@(Cons (!kl_V1830h)
                                                                                       (!kl_V1830t))) -> pat_cond_1 kl_V1830 kl_V1830h kl_V1830t
                                                                      _ -> pat_cond_37
                                                  case kl_if_0 of
                                                      Atom (B (True)) -> do !appl_38 <- kl_V1830 `pseq` hd kl_V1830
                                                                            !appl_39 <- appl_38 `pseq` tl appl_38
                                                                            !appl_40 <- appl_39 `pseq` hd appl_39
                                                                            !appl_41 <- appl_40 `pseq` tl appl_40
                                                                            !appl_42 <- appl_41 `pseq` hd appl_41
                                                                            !appl_43 <- kl_V1830 `pseq` hd kl_V1830
                                                                            !appl_44 <- appl_43 `pseq` tl appl_43
                                                                            !appl_45 <- appl_44 `pseq` tl appl_44
                                                                            !appl_46 <- appl_42 `pseq` (appl_45 `pseq` klCons appl_42 appl_45)
                                                                            !appl_47 <- appl_46 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_46
                                                                            !appl_48 <- kl_V1830 `pseq` tl kl_V1830
                                                                            !appl_49 <- appl_47 `pseq` (appl_48 `pseq` klCons appl_47 appl_48)
                                                                            !appl_50 <- kl_V1830 `pseq` hd kl_V1830
                                                                            !appl_51 <- appl_50 `pseq` tl appl_50
                                                                            !appl_52 <- appl_51 `pseq` hd appl_51
                                                                            !appl_53 <- appl_52 `pseq` tl appl_52
                                                                            !appl_54 <- appl_53 `pseq` tl appl_53
                                                                            !appl_55 <- appl_54 `pseq` hd appl_54
                                                                            appl_49 `pseq` (appl_55 `pseq` kl_shen_mu_reduction appl_49 appl_55)
                                                      Atom (B (False)) -> do !kl_if_56 <- let pat_cond_57 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_58 <- let pat_cond_59 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_60 <- let pat_cond_61 = do !kl_if_62 <- let pat_cond_63 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_64 <- let pat_cond_65 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_66 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                             !kl_if_67 <- appl_66 `pseq` (kl_V1830httt `pseq` eq appl_66 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                             !kl_if_68 <- case kl_if_67 of
                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do !kl_if_69 <- let pat_cond_70 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_71 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !kl_if_72 <- appl_71 `pseq` (kl_V1830tt `pseq` eq appl_71 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !kl_if_73 <- case kl_if_72 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do let pat_cond_74 = do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_75 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1830hth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1830hth@(Atom (UnboundSym "_")) -> pat_cond_74
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1830hth@(ApplC (PL "_"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_74
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1830hth@(ApplC (Func "_"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_74
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_75
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      case kl_if_73 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                     pat_cond_76 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                  in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                         !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1830tt))) -> pat_cond_70 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_76
                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_69 of
                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_68 of
                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                      pat_cond_77 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                   in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                          !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                              (!kl_V1830httt))) -> pat_cond_65 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_77
                                                                                                                                                                                                                                                                                                                     case kl_if_64 of
                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                 pat_cond_78 = do do return (Atom (B False))
                                                                                                                                                                                                                                                              in case kl_V1830ht of
                                                                                                                                                                                                                                                                     !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                        (!kl_V1830htt))) -> pat_cond_63 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                     _ -> pat_cond_78
                                                                                                                                                                                                                                                case kl_if_62 of
                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                               pat_cond_79 = do do return (Atom (B False))
                                                                                                                                                                                                                            in case kl_V1830hh of
                                                                                                                                                                                                                                   kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_61
                                                                                                                                                                                                                                   kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                         _)) -> pat_cond_61
                                                                                                                                                                                                                                   kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                           _)) -> pat_cond_61
                                                                                                                                                                                                                                   _ -> pat_cond_79
                                                                                                                                                                                                              case kl_if_60 of
                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                             pat_cond_80 = do do return (Atom (B False))
                                                                                                                                                          in case kl_V1830h of
                                                                                                                                                                 !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                   (!kl_V1830ht))) -> pat_cond_59 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                 _ -> pat_cond_80
                                                                                                                                            case kl_if_58 of
                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                              pat_cond_81 = do do return (Atom (B False))
                                                                                           in case kl_V1830 of
                                                                                                  !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                   (!kl_V1830t))) -> pat_cond_57 kl_V1830 kl_V1830h kl_V1830t
                                                                                                  _ -> pat_cond_81
                                                                             case kl_if_56 of
                                                                                 Atom (B (True)) -> do !appl_82 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                       !appl_83 <- appl_82 `pseq` tl appl_82
                                                                                                       !appl_84 <- appl_83 `pseq` tl appl_83
                                                                                                       !appl_85 <- appl_84 `pseq` hd appl_84
                                                                                                       appl_85 `pseq` (kl_V1831 `pseq` kl_shen_mu_reduction appl_85 kl_V1831)
                                                                                 Atom (B (False)) -> do !kl_if_86 <- let pat_cond_87 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_88 <- let pat_cond_89 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_90 <- let pat_cond_91 = do !kl_if_92 <- let pat_cond_93 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_94 <- let pat_cond_95 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_96 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_97 <- appl_96 `pseq` (kl_V1830httt `pseq` eq appl_96 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_98 <- case kl_if_97 of
                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do !kl_if_99 <- let pat_cond_100 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_101 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !kl_if_102 <- appl_101 `pseq` (kl_V1830tt `pseq` eq appl_101 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !kl_if_103 <- case kl_if_102 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do !kl_if_104 <- kl_V1830hth `pseq` (kl_V1830th `pseq` kl_shen_ephemeral_variableP kl_V1830hth kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_104 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_103 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_105 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1830tt))) -> pat_cond_100 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_105
                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_99 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_98 of
                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                 pat_cond_106 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                              in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                     !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                         (!kl_V1830httt))) -> pat_cond_95 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_106
                                                                                                                                                                                                                                                                                                                                                case kl_if_94 of
                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                            pat_cond_107 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                         in case kl_V1830ht of
                                                                                                                                                                                                                                                                                                !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                                                   (!kl_V1830htt))) -> pat_cond_93 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                                                _ -> pat_cond_107
                                                                                                                                                                                                                                                                           case kl_if_92 of
                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                          pat_cond_108 = do do return (Atom (B False))
                                                                                                                                                                                                                                                       in case kl_V1830hh of
                                                                                                                                                                                                                                                              kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_91
                                                                                                                                                                                                                                                              kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                                                    _)) -> pat_cond_91
                                                                                                                                                                                                                                                              kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                                                      _)) -> pat_cond_91
                                                                                                                                                                                                                                                              _ -> pat_cond_108
                                                                                                                                                                                                                                         case kl_if_90 of
                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                        pat_cond_109 = do do return (Atom (B False))
                                                                                                                                                                                     in case kl_V1830h of
                                                                                                                                                                                            !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                                              (!kl_V1830ht))) -> pat_cond_89 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                                            _ -> pat_cond_109
                                                                                                                                                                       case kl_if_88 of
                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                         pat_cond_110 = do do return (Atom (B False))
                                                                                                                      in case kl_V1830 of
                                                                                                                             !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                                              (!kl_V1830t))) -> pat_cond_87 kl_V1830 kl_V1830h kl_V1830t
                                                                                                                             _ -> pat_cond_110
                                                                                                        case kl_if_86 of
                                                                                                            Atom (B (True)) -> do !appl_111 <- kl_V1830 `pseq` tl kl_V1830
                                                                                                                                  !appl_112 <- appl_111 `pseq` hd appl_111
                                                                                                                                  !appl_113 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                  !appl_114 <- appl_113 `pseq` tl appl_113
                                                                                                                                  !appl_115 <- appl_114 `pseq` hd appl_114
                                                                                                                                  !appl_116 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                  !appl_117 <- appl_116 `pseq` tl appl_116
                                                                                                                                  !appl_118 <- appl_117 `pseq` tl appl_117
                                                                                                                                  !appl_119 <- appl_118 `pseq` hd appl_118
                                                                                                                                  !appl_120 <- appl_119 `pseq` (kl_V1831 `pseq` kl_shen_mu_reduction appl_119 kl_V1831)
                                                                                                                                  appl_112 `pseq` (appl_115 `pseq` (appl_120 `pseq` kl_subst appl_112 appl_115 appl_120))
                                                                                                            Atom (B (False)) -> do !kl_if_121 <- let pat_cond_122 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_123 <- let pat_cond_124 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_125 <- let pat_cond_126 = do !kl_if_127 <- let pat_cond_128 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_129 <- let pat_cond_130 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_131 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                             !kl_if_132 <- appl_131 `pseq` (kl_V1830httt `pseq` eq appl_131 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                             !kl_if_133 <- case kl_if_132 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do !kl_if_134 <- let pat_cond_135 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_136 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         !kl_if_137 <- appl_136 `pseq` (kl_V1830tt `pseq` eq appl_136 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         !kl_if_138 <- case kl_if_137 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do !kl_if_139 <- kl_V1830hth `pseq` kl_variableP kl_V1830hth
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_139 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_138 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       pat_cond_140 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (!kl_V1830tt))) -> pat_cond_135 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> pat_cond_140
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     case kl_if_134 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_133 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                     pat_cond_141 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                  in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                                                         !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                                                             (!kl_V1830httt))) -> pat_cond_130 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_141
                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_129 of
                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                              pat_cond_142 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                           in case kl_V1830ht of
                                                                                                                                                                                                                                                                                                                                  !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                                                                                     (!kl_V1830htt))) -> pat_cond_128 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_142
                                                                                                                                                                                                                                                                                                            case kl_if_127 of
                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                          pat_cond_143 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                       in case kl_V1830hh of
                                                                                                                                                                                                                                                                                              kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_126
                                                                                                                                                                                                                                                                                              kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_126
                                                                                                                                                                                                                                                                                              kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_126
                                                                                                                                                                                                                                                                                              _ -> pat_cond_143
                                                                                                                                                                                                                                                                        case kl_if_125 of
                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                      pat_cond_144 = do do return (Atom (B False))
                                                                                                                                                                                                                   in case kl_V1830h of
                                                                                                                                                                                                                          !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                                                                            (!kl_V1830ht))) -> pat_cond_124 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                                                                          _ -> pat_cond_144
                                                                                                                                                                                                    case kl_if_123 of
                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                     pat_cond_145 = do do return (Atom (B False))
                                                                                                                                                  in case kl_V1830 of
                                                                                                                                                         !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                                                                          (!kl_V1830t))) -> pat_cond_122 kl_V1830 kl_V1830h kl_V1830t
                                                                                                                                                         _ -> pat_cond_145
                                                                                                                                   case kl_if_121 of
                                                                                                                                       Atom (B (True)) -> do !appl_146 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                             !appl_147 <- appl_146 `pseq` tl appl_146
                                                                                                                                                             !appl_148 <- appl_147 `pseq` hd appl_147
                                                                                                                                                             !appl_149 <- kl_V1830 `pseq` tl kl_V1830
                                                                                                                                                             !appl_150 <- appl_149 `pseq` hd appl_149
                                                                                                                                                             !appl_151 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                             !appl_152 <- appl_151 `pseq` tl appl_151
                                                                                                                                                             !appl_153 <- appl_152 `pseq` tl appl_152
                                                                                                                                                             !appl_154 <- appl_153 `pseq` hd appl_153
                                                                                                                                                             !appl_155 <- appl_154 `pseq` (kl_V1831 `pseq` kl_shen_mu_reduction appl_154 kl_V1831)
                                                                                                                                                             let !appl_156 = Atom Nil
                                                                                                                                                             !appl_157 <- appl_155 `pseq` (appl_156 `pseq` klCons appl_155 appl_156)
                                                                                                                                                             !appl_158 <- appl_157 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_157
                                                                                                                                                             !appl_159 <- appl_150 `pseq` (appl_158 `pseq` klCons appl_150 appl_158)
                                                                                                                                                             !appl_160 <- appl_159 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.be")) appl_159
                                                                                                                                                             !appl_161 <- appl_148 `pseq` (appl_160 `pseq` klCons appl_148 appl_160)
                                                                                                                                                             appl_161 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_161
                                                                                                                                       Atom (B (False)) -> do !kl_if_162 <- let pat_cond_163 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_164 <- let pat_cond_165 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_166 <- let pat_cond_167 = do !kl_if_168 <- let pat_cond_169 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_170 <- let pat_cond_171 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_172 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_173 <- appl_172 `pseq` (kl_V1830httt `pseq` eq appl_172 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_174 <- case kl_if_173 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do !kl_if_175 <- let pat_cond_176 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_177 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_178 <- appl_177 `pseq` (kl_V1830tt `pseq` eq appl_177 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_179 <- case kl_if_178 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do !kl_if_180 <- let pat_cond_181 = do !kl_if_182 <- kl_V1830hth `pseq` kl_shen_prolog_constantP kl_V1830hth
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_182 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              pat_cond_183 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           in case kl_V1831 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  kl_V1831@(Atom (UnboundSym "-")) -> pat_cond_181
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  kl_V1831@(ApplC (PL "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_181
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  kl_V1831@(ApplC (Func "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_181
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_183
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            case kl_if_180 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_179 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_184 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (!kl_V1830tt))) -> pat_cond_176 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_184
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_175 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_174 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_185 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                                                                                    !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                        (!kl_V1830httt))) -> pat_cond_171 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_185
                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_170 of
                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                         pat_cond_186 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                      in case kl_V1830ht of
                                                                                                                                                                                                                                                                                                                                                             !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1830htt))) -> pat_cond_169 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_186
                                                                                                                                                                                                                                                                                                                                       case kl_if_168 of
                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                     pat_cond_187 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                  in case kl_V1830hh of
                                                                                                                                                                                                                                                                                                                         kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_167
                                                                                                                                                                                                                                                                                                                         kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_167
                                                                                                                                                                                                                                                                                                                         kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_167
                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_187
                                                                                                                                                                                                                                                                                                   case kl_if_166 of
                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                 pat_cond_188 = do do return (Atom (B False))
                                                                                                                                                                                                                                              in case kl_V1830h of
                                                                                                                                                                                                                                                     !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                                                                                                       (!kl_V1830ht))) -> pat_cond_165 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                                                                                                     _ -> pat_cond_188
                                                                                                                                                                                                                               case kl_if_164 of
                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                pat_cond_189 = do do return (Atom (B False))
                                                                                                                                                                             in case kl_V1830 of
                                                                                                                                                                                    !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                                                                                                     (!kl_V1830t))) -> pat_cond_163 kl_V1830 kl_V1830h kl_V1830t
                                                                                                                                                                                    _ -> pat_cond_189
                                                                                                                                                              case kl_if_162 of
                                                                                                                                                                  Atom (B (True)) -> do let !appl_190 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do !appl_191 <- kl_V1830 `pseq` tl kl_V1830
                                                                                                                                                                                                                                                      !appl_192 <- appl_191 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.dereferencing")) appl_191
                                                                                                                                                                                                                                                      !appl_193 <- appl_192 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_192
                                                                                                                                                                                                                                                      !appl_194 <- appl_193 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.result")) appl_193
                                                                                                                                                                                                                                                      !appl_195 <- appl_194 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_194
                                                                                                                                                                                                                                                      !appl_196 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                      !appl_197 <- appl_196 `pseq` tl appl_196
                                                                                                                                                                                                                                                      !appl_198 <- appl_197 `pseq` hd appl_197
                                                                                                                                                                                                                                                      let !appl_199 = Atom Nil
                                                                                                                                                                                                                                                      !appl_200 <- appl_198 `pseq` (appl_199 `pseq` klCons appl_198 appl_199)
                                                                                                                                                                                                                                                      !appl_201 <- appl_200 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.to")) appl_200
                                                                                                                                                                                                                                                      !appl_202 <- appl_201 `pseq` klCons (ApplC (wrapNamed "identical" kl_identical)) appl_201
                                                                                                                                                                                                                                                      !appl_203 <- appl_202 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "is")) appl_202
                                                                                                                                                                                                                                                      !appl_204 <- kl_Z `pseq` (appl_203 `pseq` klCons kl_Z appl_203)
                                                                                                                                                                                                                                                      !appl_205 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                      !appl_206 <- appl_205 `pseq` tl appl_205
                                                                                                                                                                                                                                                      !appl_207 <- appl_206 `pseq` tl appl_206
                                                                                                                                                                                                                                                      !appl_208 <- appl_207 `pseq` hd appl_207
                                                                                                                                                                                                                                                      !appl_209 <- appl_208 `pseq` kl_shen_mu_reduction appl_208 (ApplC (wrapNamed "-" Primitives.subtract))
                                                                                                                                                                                                                                                      let !appl_210 = Atom Nil
                                                                                                                                                                                                                                                      !appl_211 <- appl_210 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.failed!")) appl_210
                                                                                                                                                                                                                                                      !appl_212 <- appl_211 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.else")) appl_211
                                                                                                                                                                                                                                                      !appl_213 <- appl_209 `pseq` (appl_212 `pseq` klCons appl_209 appl_212)
                                                                                                                                                                                                                                                      !appl_214 <- appl_213 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_213
                                                                                                                                                                                                                                                      !appl_215 <- appl_204 `pseq` (appl_214 `pseq` klCons appl_204 appl_214)
                                                                                                                                                                                                                                                      !appl_216 <- appl_215 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_215
                                                                                                                                                                                                                                                      let !appl_217 = Atom Nil
                                                                                                                                                                                                                                                      !appl_218 <- appl_216 `pseq` (appl_217 `pseq` klCons appl_216 appl_217)
                                                                                                                                                                                                                                                      !appl_219 <- appl_218 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_218
                                                                                                                                                                                                                                                      !appl_220 <- appl_195 `pseq` (appl_219 `pseq` klCons appl_195 appl_219)
                                                                                                                                                                                                                                                      !appl_221 <- appl_220 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.be")) appl_220
                                                                                                                                                                                                                                                      !appl_222 <- kl_Z `pseq` (appl_221 `pseq` klCons kl_Z appl_221)
                                                                                                                                                                                                                                                      appl_222 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_222)))
                                                                                                                                                                                        !appl_223 <- kl_gensym (Core.Types.Atom (Core.Types.UnboundSym "V"))
                                                                                                                                                                                        appl_223 `pseq` applyWrapper appl_190 [appl_223]
                                                                                                                                                                  Atom (B (False)) -> do !kl_if_224 <- let pat_cond_225 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_226 <- let pat_cond_227 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_228 <- let pat_cond_229 = do !kl_if_230 <- let pat_cond_231 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_232 <- let pat_cond_233 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_234 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_235 <- appl_234 `pseq` (kl_V1830httt `pseq` eq appl_234 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_236 <- case kl_if_235 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do !kl_if_237 <- let pat_cond_238 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_239 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_240 <- appl_239 `pseq` (kl_V1830tt `pseq` eq appl_239 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_241 <- case kl_if_240 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do !kl_if_242 <- let pat_cond_243 = do !kl_if_244 <- kl_V1830hth `pseq` kl_shen_prolog_constantP kl_V1830hth
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_244 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_245 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1831 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1831@(Atom (UnboundSym "+")) -> pat_cond_243
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1831@(ApplC (PL "+"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_243
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1831@(ApplC (Func "+"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_243
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_245
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_242 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_241 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_246 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1830tt))) -> pat_cond_238 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_246
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_237 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_236 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_247 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1830httt))) -> pat_cond_233 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_247
                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_232 of
                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_248 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1830ht of
                                                                                                                                                                                                                                                                                                                                                                                        !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1830htt))) -> pat_cond_231 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_248
                                                                                                                                                                                                                                                                                                                                                                  case kl_if_230 of
                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                pat_cond_249 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                             in case kl_V1830hh of
                                                                                                                                                                                                                                                                                                                                                    kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_229
                                                                                                                                                                                                                                                                                                                                                    kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_229
                                                                                                                                                                                                                                                                                                                                                    kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_229
                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_249
                                                                                                                                                                                                                                                                                                                              case kl_if_228 of
                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                            pat_cond_250 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                         in case kl_V1830h of
                                                                                                                                                                                                                                                                                !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                                                                                                                                  (!kl_V1830ht))) -> pat_cond_227 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                                                                                                                                _ -> pat_cond_250
                                                                                                                                                                                                                                                          case kl_if_226 of
                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                           pat_cond_251 = do do return (Atom (B False))
                                                                                                                                                                                                        in case kl_V1830 of
                                                                                                                                                                                                               !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                                                                                                                                (!kl_V1830t))) -> pat_cond_225 kl_V1830 kl_V1830h kl_V1830t
                                                                                                                                                                                                               _ -> pat_cond_251
                                                                                                                                                                                         case kl_if_224 of
                                                                                                                                                                                             Atom (B (True)) -> do let !appl_252 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do !appl_253 <- kl_V1830 `pseq` tl kl_V1830
                                                                                                                                                                                                                                                                                 !appl_254 <- appl_253 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.dereferencing")) appl_253
                                                                                                                                                                                                                                                                                 !appl_255 <- appl_254 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_254
                                                                                                                                                                                                                                                                                 !appl_256 <- appl_255 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.result")) appl_255
                                                                                                                                                                                                                                                                                 !appl_257 <- appl_256 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_256
                                                                                                                                                                                                                                                                                 !appl_258 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                 !appl_259 <- appl_258 `pseq` tl appl_258
                                                                                                                                                                                                                                                                                 !appl_260 <- appl_259 `pseq` hd appl_259
                                                                                                                                                                                                                                                                                 let !appl_261 = Atom Nil
                                                                                                                                                                                                                                                                                 !appl_262 <- appl_260 `pseq` (appl_261 `pseq` klCons appl_260 appl_261)
                                                                                                                                                                                                                                                                                 !appl_263 <- appl_262 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.to")) appl_262
                                                                                                                                                                                                                                                                                 !appl_264 <- appl_263 `pseq` klCons (ApplC (wrapNamed "identical" kl_identical)) appl_263
                                                                                                                                                                                                                                                                                 !appl_265 <- appl_264 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "is")) appl_264
                                                                                                                                                                                                                                                                                 !appl_266 <- kl_Z `pseq` (appl_265 `pseq` klCons kl_Z appl_265)
                                                                                                                                                                                                                                                                                 !appl_267 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                 !appl_268 <- appl_267 `pseq` tl appl_267
                                                                                                                                                                                                                                                                                 !appl_269 <- appl_268 `pseq` tl appl_268
                                                                                                                                                                                                                                                                                 !appl_270 <- appl_269 `pseq` hd appl_269
                                                                                                                                                                                                                                                                                 !appl_271 <- appl_270 `pseq` kl_shen_mu_reduction appl_270 (ApplC (wrapNamed "+" add))
                                                                                                                                                                                                                                                                                 let !appl_272 = Atom Nil
                                                                                                                                                                                                                                                                                 !appl_273 <- appl_272 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.variable")) appl_272
                                                                                                                                                                                                                                                                                 !appl_274 <- appl_273 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.a")) appl_273
                                                                                                                                                                                                                                                                                 !appl_275 <- appl_274 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "is")) appl_274
                                                                                                                                                                                                                                                                                 !appl_276 <- kl_Z `pseq` (appl_275 `pseq` klCons kl_Z appl_275)
                                                                                                                                                                                                                                                                                 !appl_277 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                 !appl_278 <- appl_277 `pseq` tl appl_277
                                                                                                                                                                                                                                                                                 !appl_279 <- appl_278 `pseq` hd appl_278
                                                                                                                                                                                                                                                                                 !appl_280 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                 !appl_281 <- appl_280 `pseq` tl appl_280
                                                                                                                                                                                                                                                                                 !appl_282 <- appl_281 `pseq` tl appl_281
                                                                                                                                                                                                                                                                                 !appl_283 <- appl_282 `pseq` hd appl_282
                                                                                                                                                                                                                                                                                 !appl_284 <- appl_283 `pseq` kl_shen_mu_reduction appl_283 (ApplC (wrapNamed "+" add))
                                                                                                                                                                                                                                                                                 let !appl_285 = Atom Nil
                                                                                                                                                                                                                                                                                 !appl_286 <- appl_284 `pseq` (appl_285 `pseq` klCons appl_284 appl_285)
                                                                                                                                                                                                                                                                                 !appl_287 <- appl_286 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_286
                                                                                                                                                                                                                                                                                 !appl_288 <- appl_279 `pseq` (appl_287 `pseq` klCons appl_279 appl_287)
                                                                                                                                                                                                                                                                                 !appl_289 <- appl_288 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.to")) appl_288
                                                                                                                                                                                                                                                                                 !appl_290 <- kl_Z `pseq` (appl_289 `pseq` klCons kl_Z appl_289)
                                                                                                                                                                                                                                                                                 !appl_291 <- appl_290 `pseq` klCons (ApplC (wrapNamed "bind" kl_bind)) appl_290
                                                                                                                                                                                                                                                                                 let !appl_292 = Atom Nil
                                                                                                                                                                                                                                                                                 !appl_293 <- appl_292 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.failed!")) appl_292
                                                                                                                                                                                                                                                                                 !appl_294 <- appl_293 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.else")) appl_293
                                                                                                                                                                                                                                                                                 !appl_295 <- appl_291 `pseq` (appl_294 `pseq` klCons appl_291 appl_294)
                                                                                                                                                                                                                                                                                 !appl_296 <- appl_295 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_295
                                                                                                                                                                                                                                                                                 !appl_297 <- appl_276 `pseq` (appl_296 `pseq` klCons appl_276 appl_296)
                                                                                                                                                                                                                                                                                 !appl_298 <- appl_297 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_297
                                                                                                                                                                                                                                                                                 let !appl_299 = Atom Nil
                                                                                                                                                                                                                                                                                 !appl_300 <- appl_298 `pseq` (appl_299 `pseq` klCons appl_298 appl_299)
                                                                                                                                                                                                                                                                                 !appl_301 <- appl_300 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.else")) appl_300
                                                                                                                                                                                                                                                                                 !appl_302 <- appl_271 `pseq` (appl_301 `pseq` klCons appl_271 appl_301)
                                                                                                                                                                                                                                                                                 !appl_303 <- appl_302 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_302
                                                                                                                                                                                                                                                                                 !appl_304 <- appl_266 `pseq` (appl_303 `pseq` klCons appl_266 appl_303)
                                                                                                                                                                                                                                                                                 !appl_305 <- appl_304 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_304
                                                                                                                                                                                                                                                                                 let !appl_306 = Atom Nil
                                                                                                                                                                                                                                                                                 !appl_307 <- appl_305 `pseq` (appl_306 `pseq` klCons appl_305 appl_306)
                                                                                                                                                                                                                                                                                 !appl_308 <- appl_307 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_307
                                                                                                                                                                                                                                                                                 !appl_309 <- appl_257 `pseq` (appl_308 `pseq` klCons appl_257 appl_308)
                                                                                                                                                                                                                                                                                 !appl_310 <- appl_309 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.be")) appl_309
                                                                                                                                                                                                                                                                                 !appl_311 <- kl_Z `pseq` (appl_310 `pseq` klCons kl_Z appl_310)
                                                                                                                                                                                                                                                                                 appl_311 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_311)))
                                                                                                                                                                                                                   !appl_312 <- kl_gensym (Core.Types.Atom (Core.Types.UnboundSym "V"))
                                                                                                                                                                                                                   appl_312 `pseq` applyWrapper appl_252 [appl_312]
                                                                                                                                                                                             Atom (B (False)) -> do !kl_if_313 <- let pat_cond_314 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_315 <- let pat_cond_316 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_317 <- let pat_cond_318 = do !kl_if_319 <- let pat_cond_320 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_321 <- let pat_cond_322 kl_V1830hth kl_V1830hthh kl_V1830htht = do !kl_if_323 <- let pat_cond_324 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_325 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_326 <- appl_325 `pseq` (kl_V1830httt `pseq` eq appl_325 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_327 <- case kl_if_326 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do !kl_if_328 <- let pat_cond_329 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_330 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_331 <- appl_330 `pseq` (kl_V1830tt `pseq` eq appl_330 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_332 <- case kl_if_331 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do let pat_cond_333 = do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_334 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1831 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1831@(Atom (UnboundSym "-")) -> pat_cond_333
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1831@(ApplC (PL "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_333
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1831@(ApplC (Func "-"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_333
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_334
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_332 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_335 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (!kl_V1830tt))) -> pat_cond_329 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_335
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_328 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_327 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_336 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (!kl_V1830httt))) -> pat_cond_324 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_336
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_323 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_337 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1830hth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1830hth@(Cons (!kl_V1830hthh)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (!kl_V1830htht))) -> pat_cond_322 kl_V1830hth kl_V1830hthh kl_V1830htht
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_337
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_321 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_338 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1830ht of
                                                                                                                                                                                                                                                                                                                                                                                                                   !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1830htt))) -> pat_cond_320 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_338
                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_319 of
                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                           pat_cond_339 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1830hh of
                                                                                                                                                                                                                                                                                                                                                                               kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_318
                                                                                                                                                                                                                                                                                                                                                                               kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_318
                                                                                                                                                                                                                                                                                                                                                                               kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_318
                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_339
                                                                                                                                                                                                                                                                                                                                                         case kl_if_317 of
                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                       pat_cond_340 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                    in case kl_V1830h of
                                                                                                                                                                                                                                                                                                           !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                                                                                                                                                             (!kl_V1830ht))) -> pat_cond_316 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                                                                                                                                                           _ -> pat_cond_340
                                                                                                                                                                                                                                                                                     case kl_if_315 of
                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                      pat_cond_341 = do do return (Atom (B False))
                                                                                                                                                                                                                                   in case kl_V1830 of
                                                                                                                                                                                                                                          !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                                                                                                                                                           (!kl_V1830t))) -> pat_cond_314 kl_V1830 kl_V1830h kl_V1830t
                                                                                                                                                                                                                                          _ -> pat_cond_341
                                                                                                                                                                                                                    case kl_if_313 of
                                                                                                                                                                                                                        Atom (B (True)) -> do let !appl_342 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do !appl_343 <- kl_V1830 `pseq` tl kl_V1830
                                                                                                                                                                                                                                                                                                            !appl_344 <- appl_343 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.dereferencing")) appl_343
                                                                                                                                                                                                                                                                                                            !appl_345 <- appl_344 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_344
                                                                                                                                                                                                                                                                                                            !appl_346 <- appl_345 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.result")) appl_345
                                                                                                                                                                                                                                                                                                            !appl_347 <- appl_346 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_346
                                                                                                                                                                                                                                                                                                            let !appl_348 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_349 <- appl_348 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "list")) appl_348
                                                                                                                                                                                                                                                                                                            !appl_350 <- appl_349 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.non-empty")) appl_349
                                                                                                                                                                                                                                                                                                            !appl_351 <- appl_350 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.a")) appl_350
                                                                                                                                                                                                                                                                                                            !appl_352 <- appl_351 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "is")) appl_351
                                                                                                                                                                                                                                                                                                            !appl_353 <- kl_Z `pseq` (appl_352 `pseq` klCons kl_Z appl_352)
                                                                                                                                                                                                                                                                                                            !appl_354 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                            !appl_355 <- appl_354 `pseq` tl appl_354
                                                                                                                                                                                                                                                                                                            !appl_356 <- appl_355 `pseq` hd appl_355
                                                                                                                                                                                                                                                                                                            !appl_357 <- appl_356 `pseq` hd appl_356
                                                                                                                                                                                                                                                                                                            !appl_358 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                            !appl_359 <- appl_358 `pseq` tl appl_358
                                                                                                                                                                                                                                                                                                            !appl_360 <- appl_359 `pseq` hd appl_359
                                                                                                                                                                                                                                                                                                            !appl_361 <- appl_360 `pseq` tl appl_360
                                                                                                                                                                                                                                                                                                            !appl_362 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                            !appl_363 <- appl_362 `pseq` tl appl_362
                                                                                                                                                                                                                                                                                                            !appl_364 <- appl_363 `pseq` tl appl_363
                                                                                                                                                                                                                                                                                                            !appl_365 <- appl_361 `pseq` (appl_364 `pseq` klCons appl_361 appl_364)
                                                                                                                                                                                                                                                                                                            !appl_366 <- appl_365 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_365
                                                                                                                                                                                                                                                                                                            let !appl_367 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_368 <- kl_Z `pseq` (appl_367 `pseq` klCons kl_Z appl_367)
                                                                                                                                                                                                                                                                                                            !appl_369 <- appl_368 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_368
                                                                                                                                                                                                                                                                                                            !appl_370 <- appl_369 `pseq` klCons (ApplC (wrapNamed "tail" kl_tail)) appl_369
                                                                                                                                                                                                                                                                                                            !appl_371 <- appl_370 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_370
                                                                                                                                                                                                                                                                                                            let !appl_372 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_373 <- appl_371 `pseq` (appl_372 `pseq` klCons appl_371 appl_372)
                                                                                                                                                                                                                                                                                                            !appl_374 <- appl_366 `pseq` (appl_373 `pseq` klCons appl_366 appl_373)
                                                                                                                                                                                                                                                                                                            let !appl_375 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_376 <- appl_374 `pseq` (appl_375 `pseq` klCons appl_374 appl_375)
                                                                                                                                                                                                                                                                                                            !appl_377 <- appl_357 `pseq` (appl_376 `pseq` klCons appl_357 appl_376)
                                                                                                                                                                                                                                                                                                            !appl_378 <- appl_377 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_377
                                                                                                                                                                                                                                                                                                            let !appl_379 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_380 <- kl_Z `pseq` (appl_379 `pseq` klCons kl_Z appl_379)
                                                                                                                                                                                                                                                                                                            !appl_381 <- appl_380 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_380
                                                                                                                                                                                                                                                                                                            !appl_382 <- appl_381 `pseq` klCons (ApplC (wrapNamed "head" kl_head)) appl_381
                                                                                                                                                                                                                                                                                                            !appl_383 <- appl_382 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_382
                                                                                                                                                                                                                                                                                                            let !appl_384 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_385 <- appl_383 `pseq` (appl_384 `pseq` klCons appl_383 appl_384)
                                                                                                                                                                                                                                                                                                            !appl_386 <- appl_378 `pseq` (appl_385 `pseq` klCons appl_378 appl_385)
                                                                                                                                                                                                                                                                                                            !appl_387 <- appl_386 `pseq` kl_shen_mu_reduction appl_386 (ApplC (wrapNamed "-" Primitives.subtract))
                                                                                                                                                                                                                                                                                                            let !appl_388 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_389 <- appl_388 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.failed!")) appl_388
                                                                                                                                                                                                                                                                                                            !appl_390 <- appl_389 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.else")) appl_389
                                                                                                                                                                                                                                                                                                            !appl_391 <- appl_387 `pseq` (appl_390 `pseq` klCons appl_387 appl_390)
                                                                                                                                                                                                                                                                                                            !appl_392 <- appl_391 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_391
                                                                                                                                                                                                                                                                                                            !appl_393 <- appl_353 `pseq` (appl_392 `pseq` klCons appl_353 appl_392)
                                                                                                                                                                                                                                                                                                            !appl_394 <- appl_393 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_393
                                                                                                                                                                                                                                                                                                            let !appl_395 = Atom Nil
                                                                                                                                                                                                                                                                                                            !appl_396 <- appl_394 `pseq` (appl_395 `pseq` klCons appl_394 appl_395)
                                                                                                                                                                                                                                                                                                            !appl_397 <- appl_396 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_396
                                                                                                                                                                                                                                                                                                            !appl_398 <- appl_347 `pseq` (appl_397 `pseq` klCons appl_347 appl_397)
                                                                                                                                                                                                                                                                                                            !appl_399 <- appl_398 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.be")) appl_398
                                                                                                                                                                                                                                                                                                            !appl_400 <- kl_Z `pseq` (appl_399 `pseq` klCons kl_Z appl_399)
                                                                                                                                                                                                                                                                                                            appl_400 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_400)))
                                                                                                                                                                                                                                              !appl_401 <- kl_gensym (Core.Types.Atom (Core.Types.UnboundSym "V"))
                                                                                                                                                                                                                                              appl_401 `pseq` applyWrapper appl_342 [appl_401]
                                                                                                                                                                                                                        Atom (B (False)) -> do !kl_if_402 <- let pat_cond_403 kl_V1830 kl_V1830h kl_V1830t = do !kl_if_404 <- let pat_cond_405 kl_V1830h kl_V1830hh kl_V1830ht = do !kl_if_406 <- let pat_cond_407 = do !kl_if_408 <- let pat_cond_409 kl_V1830ht kl_V1830hth kl_V1830htt = do !kl_if_410 <- let pat_cond_411 kl_V1830hth kl_V1830hthh kl_V1830htht = do !kl_if_412 <- let pat_cond_413 kl_V1830htt kl_V1830htth kl_V1830httt = do let !appl_414 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_415 <- appl_414 `pseq` (kl_V1830httt `pseq` eq appl_414 kl_V1830httt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !kl_if_416 <- case kl_if_415 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do !kl_if_417 <- let pat_cond_418 kl_V1830t kl_V1830th kl_V1830tt = do let !appl_419 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_420 <- appl_419 `pseq` (kl_V1830tt `pseq` eq appl_419 kl_V1830tt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_421 <- case kl_if_420 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do let pat_cond_422 = do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_423 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1831 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               kl_V1831@(Atom (UnboundSym "+")) -> pat_cond_422
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               kl_V1831@(ApplC (PL "+"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_422
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               kl_V1831@(ApplC (Func "+"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_422
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_423
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_421 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_424 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1830t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1830t@(Cons (!kl_V1830th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1830tt))) -> pat_cond_418 kl_V1830t kl_V1830th kl_V1830tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_424
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_417 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_416 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_425 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1830htt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1830htt@(Cons (!kl_V1830htth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1830httt))) -> pat_cond_413 kl_V1830htt kl_V1830htth kl_V1830httt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_425
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_412 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_426 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1830hth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     !(kl_V1830hth@(Cons (!kl_V1830hthh)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (!kl_V1830htht))) -> pat_cond_411 kl_V1830hth kl_V1830hthh kl_V1830htht
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_426
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_410 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                          pat_cond_427 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                       in case kl_V1830ht of
                                                                                                                                                                                                                                                                                                                                                                                                                                              !(kl_V1830ht@(Cons (!kl_V1830hth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (!kl_V1830htt))) -> pat_cond_409 kl_V1830ht kl_V1830hth kl_V1830htt
                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> pat_cond_427
                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_408 of
                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_428 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1830hh of
                                                                                                                                                                                                                                                                                                                                                                                                          kl_V1830hh@(Atom (UnboundSym "shen.mu")) -> pat_cond_407
                                                                                                                                                                                                                                                                                                                                                                                                          kl_V1830hh@(ApplC (PL "shen.mu"
                                                                                                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_407
                                                                                                                                                                                                                                                                                                                                                                                                          kl_V1830hh@(ApplC (Func "shen.mu"
                                                                                                                                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_407
                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_428
                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_406 of
                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                  pat_cond_429 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                               in case kl_V1830h of
                                                                                                                                                                                                                                                                                                                                      !(kl_V1830h@(Cons (!kl_V1830hh)
                                                                                                                                                                                                                                                                                                                                                        (!kl_V1830ht))) -> pat_cond_405 kl_V1830h kl_V1830hh kl_V1830ht
                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_429
                                                                                                                                                                                                                                                                                                                case kl_if_404 of
                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                 pat_cond_430 = do do return (Atom (B False))
                                                                                                                                                                                                                                                              in case kl_V1830 of
                                                                                                                                                                                                                                                                     !(kl_V1830@(Cons (!kl_V1830h)
                                                                                                                                                                                                                                                                                      (!kl_V1830t))) -> pat_cond_403 kl_V1830 kl_V1830h kl_V1830t
                                                                                                                                                                                                                                                                     _ -> pat_cond_430
                                                                                                                                                                                                                                               case kl_if_402 of
                                                                                                                                                                                                                                                   Atom (B (True)) -> do let !appl_431 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do !appl_432 <- kl_V1830 `pseq` tl kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_433 <- appl_432 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.dereferencing")) appl_432
                                                                                                                                                                                                                                                                                                                                       !appl_434 <- appl_433 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_433
                                                                                                                                                                                                                                                                                                                                       !appl_435 <- appl_434 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.result")) appl_434
                                                                                                                                                                                                                                                                                                                                       !appl_436 <- appl_435 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_435
                                                                                                                                                                                                                                                                                                                                       let !appl_437 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_438 <- appl_437 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "list")) appl_437
                                                                                                                                                                                                                                                                                                                                       !appl_439 <- appl_438 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.non-empty")) appl_438
                                                                                                                                                                                                                                                                                                                                       !appl_440 <- appl_439 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.a")) appl_439
                                                                                                                                                                                                                                                                                                                                       !appl_441 <- appl_440 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "is")) appl_440
                                                                                                                                                                                                                                                                                                                                       !appl_442 <- kl_Z `pseq` (appl_441 `pseq` klCons kl_Z appl_441)
                                                                                                                                                                                                                                                                                                                                       !appl_443 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_444 <- appl_443 `pseq` tl appl_443
                                                                                                                                                                                                                                                                                                                                       !appl_445 <- appl_444 `pseq` hd appl_444
                                                                                                                                                                                                                                                                                                                                       !appl_446 <- appl_445 `pseq` hd appl_445
                                                                                                                                                                                                                                                                                                                                       !appl_447 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_448 <- appl_447 `pseq` tl appl_447
                                                                                                                                                                                                                                                                                                                                       !appl_449 <- appl_448 `pseq` hd appl_448
                                                                                                                                                                                                                                                                                                                                       !appl_450 <- appl_449 `pseq` tl appl_449
                                                                                                                                                                                                                                                                                                                                       !appl_451 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_452 <- appl_451 `pseq` tl appl_451
                                                                                                                                                                                                                                                                                                                                       !appl_453 <- appl_452 `pseq` tl appl_452
                                                                                                                                                                                                                                                                                                                                       !appl_454 <- appl_450 `pseq` (appl_453 `pseq` klCons appl_450 appl_453)
                                                                                                                                                                                                                                                                                                                                       !appl_455 <- appl_454 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_454
                                                                                                                                                                                                                                                                                                                                       let !appl_456 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_457 <- kl_Z `pseq` (appl_456 `pseq` klCons kl_Z appl_456)
                                                                                                                                                                                                                                                                                                                                       !appl_458 <- appl_457 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_457
                                                                                                                                                                                                                                                                                                                                       !appl_459 <- appl_458 `pseq` klCons (ApplC (wrapNamed "tail" kl_tail)) appl_458
                                                                                                                                                                                                                                                                                                                                       !appl_460 <- appl_459 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_459
                                                                                                                                                                                                                                                                                                                                       let !appl_461 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_462 <- appl_460 `pseq` (appl_461 `pseq` klCons appl_460 appl_461)
                                                                                                                                                                                                                                                                                                                                       !appl_463 <- appl_455 `pseq` (appl_462 `pseq` klCons appl_455 appl_462)
                                                                                                                                                                                                                                                                                                                                       let !appl_464 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_465 <- appl_463 `pseq` (appl_464 `pseq` klCons appl_463 appl_464)
                                                                                                                                                                                                                                                                                                                                       !appl_466 <- appl_446 `pseq` (appl_465 `pseq` klCons appl_446 appl_465)
                                                                                                                                                                                                                                                                                                                                       !appl_467 <- appl_466 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.mu")) appl_466
                                                                                                                                                                                                                                                                                                                                       let !appl_468 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_469 <- kl_Z `pseq` (appl_468 `pseq` klCons kl_Z appl_468)
                                                                                                                                                                                                                                                                                                                                       !appl_470 <- appl_469 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.of")) appl_469
                                                                                                                                                                                                                                                                                                                                       !appl_471 <- appl_470 `pseq` klCons (ApplC (wrapNamed "head" kl_head)) appl_470
                                                                                                                                                                                                                                                                                                                                       !appl_472 <- appl_471 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_471
                                                                                                                                                                                                                                                                                                                                       let !appl_473 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_474 <- appl_472 `pseq` (appl_473 `pseq` klCons appl_472 appl_473)
                                                                                                                                                                                                                                                                                                                                       !appl_475 <- appl_467 `pseq` (appl_474 `pseq` klCons appl_467 appl_474)
                                                                                                                                                                                                                                                                                                                                       !appl_476 <- appl_475 `pseq` kl_shen_mu_reduction appl_475 (ApplC (wrapNamed "+" add))
                                                                                                                                                                                                                                                                                                                                       let !appl_477 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_478 <- appl_477 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.variable")) appl_477
                                                                                                                                                                                                                                                                                                                                       !appl_479 <- appl_478 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.a")) appl_478
                                                                                                                                                                                                                                                                                                                                       !appl_480 <- appl_479 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "is")) appl_479
                                                                                                                                                                                                                                                                                                                                       !appl_481 <- kl_Z `pseq` (appl_480 `pseq` klCons kl_Z appl_480)
                                                                                                                                                                                                                                                                                                                                       !appl_482 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_483 <- appl_482 `pseq` tl appl_482
                                                                                                                                                                                                                                                                                                                                       !appl_484 <- appl_483 `pseq` hd appl_483
                                                                                                                                                                                                                                                                                                                                       !appl_485 <- appl_484 `pseq` kl_shen_extract_vars appl_484
                                                                                                                                                                                                                                                                                                                                       !appl_486 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_487 <- appl_486 `pseq` tl appl_486
                                                                                                                                                                                                                                                                                                                                       !appl_488 <- appl_487 `pseq` hd appl_487
                                                                                                                                                                                                                                                                                                                                       !appl_489 <- appl_488 `pseq` kl_shen_remove_modes appl_488
                                                                                                                                                                                                                                                                                                                                       !appl_490 <- appl_489 `pseq` kl_shen_rcons_form appl_489
                                                                                                                                                                                                                                                                                                                                       !appl_491 <- kl_V1830 `pseq` hd kl_V1830
                                                                                                                                                                                                                                                                                                                                       !appl_492 <- appl_491 `pseq` tl appl_491
                                                                                                                                                                                                                                                                                                                                       !appl_493 <- appl_492 `pseq` tl appl_492
                                                                                                                                                                                                                                                                                                                                       !appl_494 <- appl_493 `pseq` hd appl_493
                                                                                                                                                                                                                                                                                                                                       !appl_495 <- appl_494 `pseq` kl_shen_mu_reduction appl_494 (ApplC (wrapNamed "+" add))
                                                                                                                                                                                                                                                                                                                                       let !appl_496 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_497 <- appl_495 `pseq` (appl_496 `pseq` klCons appl_495 appl_496)
                                                                                                                                                                                                                                                                                                                                       !appl_498 <- appl_497 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_497
                                                                                                                                                                                                                                                                                                                                       !appl_499 <- appl_490 `pseq` (appl_498 `pseq` klCons appl_490 appl_498)
                                                                                                                                                                                                                                                                                                                                       !appl_500 <- appl_499 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.to")) appl_499
                                                                                                                                                                                                                                                                                                                                       !appl_501 <- kl_Z `pseq` (appl_500 `pseq` klCons kl_Z appl_500)
                                                                                                                                                                                                                                                                                                                                       !appl_502 <- appl_501 `pseq` klCons (ApplC (wrapNamed "bind" kl_bind)) appl_501
                                                                                                                                                                                                                                                                                                                                       let !appl_503 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_504 <- appl_502 `pseq` (appl_503 `pseq` klCons appl_502 appl_503)
                                                                                                                                                                                                                                                                                                                                       !appl_505 <- appl_504 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_504
                                                                                                                                                                                                                                                                                                                                       !appl_506 <- appl_505 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "and")) appl_505
                                                                                                                                                                                                                                                                                                                                       !appl_507 <- appl_485 `pseq` (appl_506 `pseq` klCons appl_485 appl_506)
                                                                                                                                                                                                                                                                                                                                       !appl_508 <- appl_507 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_507
                                                                                                                                                                                                                                                                                                                                       !appl_509 <- appl_508 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.variables")) appl_508
                                                                                                                                                                                                                                                                                                                                       !appl_510 <- appl_509 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_509
                                                                                                                                                                                                                                                                                                                                       !appl_511 <- appl_510 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.rename")) appl_510
                                                                                                                                                                                                                                                                                                                                       let !appl_512 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_513 <- appl_512 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.failed!")) appl_512
                                                                                                                                                                                                                                                                                                                                       !appl_514 <- appl_513 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.else")) appl_513
                                                                                                                                                                                                                                                                                                                                       !appl_515 <- appl_511 `pseq` (appl_514 `pseq` klCons appl_511 appl_514)
                                                                                                                                                                                                                                                                                                                                       !appl_516 <- appl_515 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_515
                                                                                                                                                                                                                                                                                                                                       !appl_517 <- appl_481 `pseq` (appl_516 `pseq` klCons appl_481 appl_516)
                                                                                                                                                                                                                                                                                                                                       !appl_518 <- appl_517 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_517
                                                                                                                                                                                                                                                                                                                                       let !appl_519 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_520 <- appl_518 `pseq` (appl_519 `pseq` klCons appl_518 appl_519)
                                                                                                                                                                                                                                                                                                                                       !appl_521 <- appl_520 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.else")) appl_520
                                                                                                                                                                                                                                                                                                                                       !appl_522 <- appl_476 `pseq` (appl_521 `pseq` klCons appl_476 appl_521)
                                                                                                                                                                                                                                                                                                                                       !appl_523 <- appl_522 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.then")) appl_522
                                                                                                                                                                                                                                                                                                                                       !appl_524 <- appl_442 `pseq` (appl_523 `pseq` klCons appl_442 appl_523)
                                                                                                                                                                                                                                                                                                                                       !appl_525 <- appl_524 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_524
                                                                                                                                                                                                                                                                                                                                       let !appl_526 = Atom Nil
                                                                                                                                                                                                                                                                                                                                       !appl_527 <- appl_525 `pseq` (appl_526 `pseq` klCons appl_525 appl_526)
                                                                                                                                                                                                                                                                                                                                       !appl_528 <- appl_527 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_527
                                                                                                                                                                                                                                                                                                                                       !appl_529 <- appl_436 `pseq` (appl_528 `pseq` klCons appl_436 appl_528)
                                                                                                                                                                                                                                                                                                                                       !appl_530 <- appl_529 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.be")) appl_529
                                                                                                                                                                                                                                                                                                                                       !appl_531 <- kl_Z `pseq` (appl_530 `pseq` klCons kl_Z appl_530)
                                                                                                                                                                                                                                                                                                                                       appl_531 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_531)))
                                                                                                                                                                                                                                                                         !appl_532 <- kl_gensym (Core.Types.Atom (Core.Types.UnboundSym "V"))
                                                                                                                                                                                                                                                                         appl_532 `pseq` applyWrapper appl_431 [appl_532]
                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return kl_V1830
                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                            _ -> throwError "if: expected boolean"
                                                                                 _ -> throwError "if: expected boolean"
                                                      _ -> throwError "if: expected boolean"

kl_shen_rcons_form :: Core.Types.KLValue ->
                      Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_rcons_form (!kl_V1833) = do let pat_cond_0 kl_V1833 kl_V1833h kl_V1833t = do !appl_1 <- kl_V1833h `pseq` kl_shen_rcons_form kl_V1833h
                                                                                     !appl_2 <- kl_V1833t `pseq` kl_shen_rcons_form kl_V1833t
                                                                                     let !appl_3 = Atom Nil
                                                                                     !appl_4 <- appl_2 `pseq` (appl_3 `pseq` klCons appl_2 appl_3)
                                                                                     !appl_5 <- appl_1 `pseq` (appl_4 `pseq` klCons appl_1 appl_4)
                                                                                     appl_5 `pseq` klCons (ApplC (wrapNamed "cons" klCons)) appl_5
                                        pat_cond_6 = do do return kl_V1833
                                     in case kl_V1833 of
                                            !(kl_V1833@(Cons (!kl_V1833h)
                                                             (!kl_V1833t))) -> pat_cond_0 kl_V1833 kl_V1833h kl_V1833t
                                            _ -> pat_cond_6

kl_shen_remove_modes :: Core.Types.KLValue ->
                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_remove_modes (!kl_V1835) = do !kl_if_0 <- let pat_cond_1 kl_V1835 kl_V1835h kl_V1835t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1835t kl_V1835th kl_V1835tt = do !kl_if_6 <- let pat_cond_7 kl_V1835tt kl_V1835tth kl_V1835ttt = do !kl_if_8 <- let pat_cond_9 = do let !appl_10 = Atom Nil
                                                                                                                                                                                                                                                                                                      !kl_if_11 <- appl_10 `pseq` (kl_V1835ttt `pseq` eq appl_10 kl_V1835ttt)
                                                                                                                                                                                                                                                                                                      case kl_if_11 of
                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                      pat_cond_12 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                   in case kl_V1835tth of
                                                                                                                                                                                                                                                                                          kl_V1835tth@(Atom (UnboundSym "+")) -> pat_cond_9
                                                                                                                                                                                                                                                                                          kl_V1835tth@(ApplC (PL "+"
                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                          kl_V1835tth@(ApplC (Func "+"
                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                          _ -> pat_cond_12
                                                                                                                                                                                                                                                                      case kl_if_8 of
                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                   pat_cond_13 = do do return (Atom (B False))
                                                                                                                                                                                                                in case kl_V1835tt of
                                                                                                                                                                                                                       !(kl_V1835tt@(Cons (!kl_V1835tth)
                                                                                                                                                                                                                                          (!kl_V1835ttt))) -> pat_cond_7 kl_V1835tt kl_V1835tth kl_V1835ttt
                                                                                                                                                                                                                       _ -> pat_cond_13
                                                                                                                                                                                                   case kl_if_6 of
                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                   pat_cond_14 = do do return (Atom (B False))
                                                                                                                                                in case kl_V1835t of
                                                                                                                                                       !(kl_V1835t@(Cons (!kl_V1835th)
                                                                                                                                                                         (!kl_V1835tt))) -> pat_cond_5 kl_V1835t kl_V1835th kl_V1835tt
                                                                                                                                                       _ -> pat_cond_14
                                                                                                                                   case kl_if_4 of
                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                   pat_cond_15 = do do return (Atom (B False))
                                                                                                                in case kl_V1835h of
                                                                                                                       kl_V1835h@(Atom (UnboundSym "mode")) -> pat_cond_3
                                                                                                                       kl_V1835h@(ApplC (PL "mode"
                                                                                                                                            _)) -> pat_cond_3
                                                                                                                       kl_V1835h@(ApplC (Func "mode"
                                                                                                                                              _)) -> pat_cond_3
                                                                                                                       _ -> pat_cond_15
                                                                                                   case kl_if_2 of
                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                       _ -> throwError "if: expected boolean"
                                                      pat_cond_16 = do do return (Atom (B False))
                                                   in case kl_V1835 of
                                                          !(kl_V1835@(Cons (!kl_V1835h)
                                                                           (!kl_V1835t))) -> pat_cond_1 kl_V1835 kl_V1835h kl_V1835t
                                                          _ -> pat_cond_16
                                      case kl_if_0 of
                                          Atom (B (True)) -> do !appl_17 <- kl_V1835 `pseq` tl kl_V1835
                                                                !appl_18 <- appl_17 `pseq` hd appl_17
                                                                appl_18 `pseq` kl_shen_remove_modes appl_18
                                          Atom (B (False)) -> do !kl_if_19 <- let pat_cond_20 kl_V1835 kl_V1835h kl_V1835t = do !kl_if_21 <- let pat_cond_22 = do !kl_if_23 <- let pat_cond_24 kl_V1835t kl_V1835th kl_V1835tt = do !kl_if_25 <- let pat_cond_26 kl_V1835tt kl_V1835tth kl_V1835ttt = do !kl_if_27 <- let pat_cond_28 = do let !appl_29 = Atom Nil
                                                                                                                                                                                                                                                                                                                                           !kl_if_30 <- appl_29 `pseq` (kl_V1835ttt `pseq` eq appl_29 kl_V1835ttt)
                                                                                                                                                                                                                                                                                                                                           case kl_if_30 of
                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                          pat_cond_31 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                       in case kl_V1835tth of
                                                                                                                                                                                                                                                                                                                              kl_V1835tth@(Atom (UnboundSym "-")) -> pat_cond_28
                                                                                                                                                                                                                                                                                                                              kl_V1835tth@(ApplC (PL "-"
                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_28
                                                                                                                                                                                                                                                                                                                              kl_V1835tth@(ApplC (Func "-"
                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_28
                                                                                                                                                                                                                                                                                                                              _ -> pat_cond_31
                                                                                                                                                                                                                                                                                                         case kl_if_27 of
                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                     pat_cond_32 = do do return (Atom (B False))
                                                                                                                                                                                                                                                  in case kl_V1835tt of
                                                                                                                                                                                                                                                         !(kl_V1835tt@(Cons (!kl_V1835tth)
                                                                                                                                                                                                                                                                            (!kl_V1835ttt))) -> pat_cond_26 kl_V1835tt kl_V1835tth kl_V1835ttt
                                                                                                                                                                                                                                                         _ -> pat_cond_32
                                                                                                                                                                                                                                    case kl_if_25 of
                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                   pat_cond_33 = do do return (Atom (B False))
                                                                                                                                                                                in case kl_V1835t of
                                                                                                                                                                                       !(kl_V1835t@(Cons (!kl_V1835th)
                                                                                                                                                                                                         (!kl_V1835tt))) -> pat_cond_24 kl_V1835t kl_V1835th kl_V1835tt
                                                                                                                                                                                       _ -> pat_cond_33
                                                                                                                                                                  case kl_if_23 of
                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                 pat_cond_34 = do do return (Atom (B False))
                                                                                                                                              in case kl_V1835h of
                                                                                                                                                     kl_V1835h@(Atom (UnboundSym "mode")) -> pat_cond_22
                                                                                                                                                     kl_V1835h@(ApplC (PL "mode"
                                                                                                                                                                          _)) -> pat_cond_22
                                                                                                                                                     kl_V1835h@(ApplC (Func "mode"
                                                                                                                                                                            _)) -> pat_cond_22
                                                                                                                                                     _ -> pat_cond_34
                                                                                                                                case kl_if_21 of
                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                  pat_cond_35 = do do return (Atom (B False))
                                                                               in case kl_V1835 of
                                                                                      !(kl_V1835@(Cons (!kl_V1835h)
                                                                                                       (!kl_V1835t))) -> pat_cond_20 kl_V1835 kl_V1835h kl_V1835t
                                                                                      _ -> pat_cond_35
                                                                 case kl_if_19 of
                                                                     Atom (B (True)) -> do !appl_36 <- kl_V1835 `pseq` tl kl_V1835
                                                                                           !appl_37 <- appl_36 `pseq` hd appl_36
                                                                                           appl_37 `pseq` kl_shen_remove_modes appl_37
                                                                     Atom (B (False)) -> do let pat_cond_38 kl_V1835 kl_V1835h kl_V1835t = do !appl_39 <- kl_V1835h `pseq` kl_shen_remove_modes kl_V1835h
                                                                                                                                              !appl_40 <- kl_V1835t `pseq` kl_shen_remove_modes kl_V1835t
                                                                                                                                              appl_39 `pseq` (appl_40 `pseq` klCons appl_39 appl_40)
                                                                                                pat_cond_41 = do do return kl_V1835
                                                                                             in case kl_V1835 of
                                                                                                    !(kl_V1835@(Cons (!kl_V1835h)
                                                                                                                     (!kl_V1835t))) -> pat_cond_38 kl_V1835 kl_V1835h kl_V1835t
                                                                                                    _ -> pat_cond_41
                                                                     _ -> throwError "if: expected boolean"
                                          _ -> throwError "if: expected boolean"

kl_shen_ephemeral_variableP :: Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_ephemeral_variableP (!kl_V1838) (!kl_V1839) = do !kl_if_0 <- kl_V1838 `pseq` kl_variableP kl_V1838
                                                         case kl_if_0 of
                                                             Atom (B (True)) -> do !kl_if_1 <- kl_V1839 `pseq` kl_variableP kl_V1839
                                                                                   case kl_if_1 of
                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                       _ -> throwError "if: expected boolean"
                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                             _ -> throwError "if: expected boolean"

kl_shen_prolog_constantP :: Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_prolog_constantP (!kl_V1849) = do let pat_cond_0 kl_V1849 kl_V1849h kl_V1849t = do return (Atom (B False))
                                              pat_cond_1 = do do return (Atom (B True))
                                           in case kl_V1849 of
                                                  !(kl_V1849@(Cons (!kl_V1849h)
                                                                   (!kl_V1849t))) -> pat_cond_0 kl_V1849 kl_V1849h kl_V1849t
                                                  _ -> pat_cond_1

kl_shen_aum_to_shen :: Core.Types.KLValue ->
                       Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_aum_to_shen (!kl_V1851) = do !kl_if_0 <- let pat_cond_1 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_2 <- let pat_cond_3 = do !kl_if_4 <- let pat_cond_5 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_6 <- let pat_cond_7 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_8 <- let pat_cond_9 = do !kl_if_10 <- let pat_cond_11 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_12 <- let pat_cond_13 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do !kl_if_14 <- let pat_cond_15 = do !kl_if_16 <- let pat_cond_17 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt = do let !appl_18 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_19 <- appl_18 `pseq` (kl_V1851tttttt `pseq` eq appl_18 kl_V1851tttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_19 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_20 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1851ttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1851ttttt@(Cons (!kl_V1851ttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (!kl_V1851tttttt))) -> pat_cond_17 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_20
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_16 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_21 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851tttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851tttth@(Atom (UnboundSym "in")) -> pat_cond_15
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851tttth@(ApplC (PL "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_15
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851tttth@(ApplC (Func "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_15
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_21
                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_14 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                              pat_cond_22 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                           in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                  !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                       (!kl_V1851ttttt))) -> pat_cond_13 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_22
                                                                                                                                                                                                                                                                                                                                                                             case kl_if_12 of
                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                      pat_cond_23 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                   in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                          !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                              (!kl_V1851tttt))) -> pat_cond_11 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_23
                                                                                                                                                                                                                                                                                                     case kl_if_10 of
                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                     pat_cond_24 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                  in case kl_V1851tth of
                                                                                                                                                                                                                                                                                         kl_V1851tth@(Atom (UnboundSym "shen.be")) -> pat_cond_9
                                                                                                                                                                                                                                                                                         kl_V1851tth@(ApplC (PL "shen.be"
                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                         kl_V1851tth@(ApplC (Func "shen.be"
                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_9
                                                                                                                                                                                                                                                                                         _ -> pat_cond_24
                                                                                                                                                                                                                                                                     case kl_if_8 of
                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                  pat_cond_25 = do do return (Atom (B False))
                                                                                                                                                                                                               in case kl_V1851tt of
                                                                                                                                                                                                                      !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                         (!kl_V1851ttt))) -> pat_cond_7 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                      _ -> pat_cond_25
                                                                                                                                                                                                  case kl_if_6 of
                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                  pat_cond_26 = do do return (Atom (B False))
                                                                                                                                               in case kl_V1851t of
                                                                                                                                                      !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                        (!kl_V1851tt))) -> pat_cond_5 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                      _ -> pat_cond_26
                                                                                                                                  case kl_if_4 of
                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                  pat_cond_27 = do do return (Atom (B False))
                                                                                                               in case kl_V1851h of
                                                                                                                      kl_V1851h@(Atom (UnboundSym "let")) -> pat_cond_3
                                                                                                                      kl_V1851h@(ApplC (PL "let"
                                                                                                                                           _)) -> pat_cond_3
                                                                                                                      kl_V1851h@(ApplC (Func "let"
                                                                                                                                             _)) -> pat_cond_3
                                                                                                                      _ -> pat_cond_27
                                                                                                  case kl_if_2 of
                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                      _ -> throwError "if: expected boolean"
                                                     pat_cond_28 = do do return (Atom (B False))
                                                  in case kl_V1851 of
                                                         !(kl_V1851@(Cons (!kl_V1851h)
                                                                          (!kl_V1851t))) -> pat_cond_1 kl_V1851 kl_V1851h kl_V1851t
                                                         _ -> pat_cond_28
                                     case kl_if_0 of
                                         Atom (B (True)) -> do !appl_29 <- kl_V1851 `pseq` tl kl_V1851
                                                               !appl_30 <- appl_29 `pseq` hd appl_29
                                                               !appl_31 <- kl_V1851 `pseq` tl kl_V1851
                                                               !appl_32 <- appl_31 `pseq` tl appl_31
                                                               !appl_33 <- appl_32 `pseq` tl appl_32
                                                               !appl_34 <- appl_33 `pseq` hd appl_33
                                                               !appl_35 <- appl_34 `pseq` kl_shen_aum_to_shen appl_34
                                                               !appl_36 <- kl_V1851 `pseq` tl kl_V1851
                                                               !appl_37 <- appl_36 `pseq` tl appl_36
                                                               !appl_38 <- appl_37 `pseq` tl appl_37
                                                               !appl_39 <- appl_38 `pseq` tl appl_38
                                                               !appl_40 <- appl_39 `pseq` tl appl_39
                                                               !appl_41 <- appl_40 `pseq` hd appl_40
                                                               !appl_42 <- appl_41 `pseq` kl_shen_aum_to_shen appl_41
                                                               let !appl_43 = Atom Nil
                                                               !appl_44 <- appl_42 `pseq` (appl_43 `pseq` klCons appl_42 appl_43)
                                                               !appl_45 <- appl_35 `pseq` (appl_44 `pseq` klCons appl_35 appl_44)
                                                               !appl_46 <- appl_30 `pseq` (appl_45 `pseq` klCons appl_30 appl_45)
                                                               appl_46 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_46
                                         Atom (B (False)) -> do !kl_if_47 <- let pat_cond_48 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_49 <- let pat_cond_50 = do !kl_if_51 <- let pat_cond_52 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_53 <- let pat_cond_54 = do !kl_if_55 <- let pat_cond_56 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_57 <- let pat_cond_58 = do !kl_if_59 <- let pat_cond_60 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_61 <- let pat_cond_62 = do !kl_if_63 <- let pat_cond_64 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do let !appl_65 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !kl_if_66 <- appl_65 `pseq` (kl_V1851ttttt `pseq` eq appl_65 kl_V1851ttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_66 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       pat_cond_67 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1851ttttt))) -> pat_cond_64 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> pat_cond_67
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      case kl_if_63 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     pat_cond_68 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  in case kl_V1851ttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         kl_V1851ttth@(Atom (UnboundSym "shen.dereferencing")) -> pat_cond_62
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         kl_V1851ttth@(ApplC (PL "shen.dereferencing"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_62
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         kl_V1851ttth@(ApplC (Func "shen.dereferencing"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_62
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_68
                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_61 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_69 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                     (!kl_V1851tttt))) -> pat_cond_60 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_69
                                                                                                                                                                                                                                                                                                                                                                            case kl_if_59 of
                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                           pat_cond_70 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                        in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                               kl_V1851tth@(Atom (UnboundSym "shen.of")) -> pat_cond_58
                                                                                                                                                                                                                                                                                                                                                               kl_V1851tth@(ApplC (PL "shen.of"
                                                                                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_58
                                                                                                                                                                                                                                                                                                                                                               kl_V1851tth@(ApplC (Func "shen.of"
                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_58
                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_70
                                                                                                                                                                                                                                                                                                                                          case kl_if_57 of
                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                      pat_cond_71 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                   in case kl_V1851tt of
                                                                                                                                                                                                                                                                                          !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                             (!kl_V1851ttt))) -> pat_cond_56 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                          _ -> pat_cond_71
                                                                                                                                                                                                                                                                     case kl_if_55 of
                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                    pat_cond_72 = do do return (Atom (B False))
                                                                                                                                                                                                                                                 in case kl_V1851th of
                                                                                                                                                                                                                                                        kl_V1851th@(Atom (UnboundSym "shen.result")) -> pat_cond_54
                                                                                                                                                                                                                                                        kl_V1851th@(ApplC (PL "shen.result"
                                                                                                                                                                                                                                                                              _)) -> pat_cond_54
                                                                                                                                                                                                                                                        kl_V1851th@(ApplC (Func "shen.result"
                                                                                                                                                                                                                                                                                _)) -> pat_cond_54
                                                                                                                                                                                                                                                        _ -> pat_cond_72
                                                                                                                                                                                                                                   case kl_if_53 of
                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                  pat_cond_73 = do do return (Atom (B False))
                                                                                                                                                                               in case kl_V1851t of
                                                                                                                                                                                      !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                        (!kl_V1851tt))) -> pat_cond_52 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                      _ -> pat_cond_73
                                                                                                                                                                 case kl_if_51 of
                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                pat_cond_74 = do do return (Atom (B False))
                                                                                                                                             in case kl_V1851h of
                                                                                                                                                    kl_V1851h@(Atom (UnboundSym "shen.the")) -> pat_cond_50
                                                                                                                                                    kl_V1851h@(ApplC (PL "shen.the"
                                                                                                                                                                         _)) -> pat_cond_50
                                                                                                                                                    kl_V1851h@(ApplC (Func "shen.the"
                                                                                                                                                                           _)) -> pat_cond_50
                                                                                                                                                    _ -> pat_cond_74
                                                                                                                               case kl_if_49 of
                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                 pat_cond_75 = do do return (Atom (B False))
                                                                              in case kl_V1851 of
                                                                                     !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                      (!kl_V1851t))) -> pat_cond_48 kl_V1851 kl_V1851h kl_V1851t
                                                                                     _ -> pat_cond_75
                                                                case kl_if_47 of
                                                                    Atom (B (True)) -> do !appl_76 <- kl_V1851 `pseq` tl kl_V1851
                                                                                          !appl_77 <- appl_76 `pseq` tl appl_76
                                                                                          !appl_78 <- appl_77 `pseq` tl appl_77
                                                                                          !appl_79 <- appl_78 `pseq` tl appl_78
                                                                                          !appl_80 <- appl_79 `pseq` hd appl_79
                                                                                          !appl_81 <- appl_80 `pseq` kl_shen_aum_to_shen appl_80
                                                                                          let !appl_82 = Atom Nil
                                                                                          !appl_83 <- appl_82 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_82
                                                                                          !appl_84 <- appl_81 `pseq` (appl_83 `pseq` klCons appl_81 appl_83)
                                                                                          appl_84 `pseq` klCons (ApplC (wrapNamed "shen.lazyderef" kl_shen_lazyderef)) appl_84
                                                                    Atom (B (False)) -> do !kl_if_85 <- let pat_cond_86 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_87 <- let pat_cond_88 = do !kl_if_89 <- let pat_cond_90 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_91 <- let pat_cond_92 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_93 <- let pat_cond_94 = do !kl_if_95 <- let pat_cond_96 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_97 <- let pat_cond_98 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do !kl_if_99 <- let pat_cond_100 = do !kl_if_101 <- let pat_cond_102 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt = do let !appl_103 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !kl_if_104 <- appl_103 `pseq` (kl_V1851tttttt `pseq` eq appl_103 kl_V1851tttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_104 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_105 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851ttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1851ttttt@(Cons (!kl_V1851ttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (!kl_V1851tttttt))) -> pat_cond_102 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_105
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_101 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_106 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851tttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851tttth@(Atom (UnboundSym "shen.else")) -> pat_cond_100
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851tttth@(ApplC (PL "shen.else"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_100
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851tttth@(ApplC (Func "shen.else"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_100
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_106
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_99 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                              pat_cond_107 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                           in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (!kl_V1851ttttt))) -> pat_cond_98 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_107
                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_97 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_108 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                              (!kl_V1851tttt))) -> pat_cond_96 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_108
                                                                                                                                                                                                                                                                                                                                                                     case kl_if_95 of
                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                    pat_cond_109 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(Atom (UnboundSym "shen.then")) -> pat_cond_94
                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(ApplC (PL "shen.then"
                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_94
                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(ApplC (Func "shen.then"
                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_94
                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_109
                                                                                                                                                                                                                                                                                                                                   case kl_if_93 of
                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                               pat_cond_110 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                            in case kl_V1851tt of
                                                                                                                                                                                                                                                                                   !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                      (!kl_V1851ttt))) -> pat_cond_92 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                   _ -> pat_cond_110
                                                                                                                                                                                                                                                              case kl_if_91 of
                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                             pat_cond_111 = do do return (Atom (B False))
                                                                                                                                                                                                          in case kl_V1851t of
                                                                                                                                                                                                                 !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                   (!kl_V1851tt))) -> pat_cond_90 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                 _ -> pat_cond_111
                                                                                                                                                                                            case kl_if_89 of
                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                           pat_cond_112 = do do return (Atom (B False))
                                                                                                                                                                        in case kl_V1851h of
                                                                                                                                                                               kl_V1851h@(Atom (UnboundSym "if")) -> pat_cond_88
                                                                                                                                                                               kl_V1851h@(ApplC (PL "if"
                                                                                                                                                                                                    _)) -> pat_cond_88
                                                                                                                                                                               kl_V1851h@(ApplC (Func "if"
                                                                                                                                                                                                      _)) -> pat_cond_88
                                                                                                                                                                               _ -> pat_cond_112
                                                                                                                                                          case kl_if_87 of
                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                            pat_cond_113 = do do return (Atom (B False))
                                                                                                         in case kl_V1851 of
                                                                                                                !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                 (!kl_V1851t))) -> pat_cond_86 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                _ -> pat_cond_113
                                                                                           case kl_if_85 of
                                                                                               Atom (B (True)) -> do !appl_114 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                     !appl_115 <- appl_114 `pseq` hd appl_114
                                                                                                                     !appl_116 <- appl_115 `pseq` kl_shen_aum_to_shen appl_115
                                                                                                                     !appl_117 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                     !appl_118 <- appl_117 `pseq` tl appl_117
                                                                                                                     !appl_119 <- appl_118 `pseq` tl appl_118
                                                                                                                     !appl_120 <- appl_119 `pseq` hd appl_119
                                                                                                                     !appl_121 <- appl_120 `pseq` kl_shen_aum_to_shen appl_120
                                                                                                                     !appl_122 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                     !appl_123 <- appl_122 `pseq` tl appl_122
                                                                                                                     !appl_124 <- appl_123 `pseq` tl appl_123
                                                                                                                     !appl_125 <- appl_124 `pseq` tl appl_124
                                                                                                                     !appl_126 <- appl_125 `pseq` tl appl_125
                                                                                                                     !appl_127 <- appl_126 `pseq` hd appl_126
                                                                                                                     !appl_128 <- appl_127 `pseq` kl_shen_aum_to_shen appl_127
                                                                                                                     let !appl_129 = Atom Nil
                                                                                                                     !appl_130 <- appl_128 `pseq` (appl_129 `pseq` klCons appl_128 appl_129)
                                                                                                                     !appl_131 <- appl_121 `pseq` (appl_130 `pseq` klCons appl_121 appl_130)
                                                                                                                     !appl_132 <- appl_116 `pseq` (appl_131 `pseq` klCons appl_116 appl_131)
                                                                                                                     appl_132 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "if")) appl_132
                                                                                               Atom (B (False)) -> do !kl_if_133 <- let pat_cond_134 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_135 <- let pat_cond_136 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_137 <- let pat_cond_138 = do !kl_if_139 <- let pat_cond_140 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_141 <- let pat_cond_142 = do !kl_if_143 <- let pat_cond_144 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_145 <- let pat_cond_146 = do let !appl_147 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_148 <- appl_147 `pseq` (kl_V1851tttt `pseq` eq appl_147 kl_V1851tttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_148 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_149 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1851ttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          kl_V1851ttth@(Atom (UnboundSym "shen.variable")) -> pat_cond_146
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          kl_V1851ttth@(ApplC (PL "shen.variable"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_146
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          kl_V1851ttth@(ApplC (Func "shen.variable"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_146
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_149
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_145 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_150 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                    (!kl_V1851tttt))) -> pat_cond_144 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_150
                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_143 of
                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                        pat_cond_151 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                     in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                            kl_V1851tth@(Atom (UnboundSym "shen.a")) -> pat_cond_142
                                                                                                                                                                                                                                                                                                                                                                                            kl_V1851tth@(ApplC (PL "shen.a"
                                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_142
                                                                                                                                                                                                                                                                                                                                                                                            kl_V1851tth@(ApplC (Func "shen.a"
                                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_142
                                                                                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_151
                                                                                                                                                                                                                                                                                                                                                                      case kl_if_141 of
                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                 pat_cond_152 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                              in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                     !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                        (!kl_V1851ttt))) -> pat_cond_140 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_152
                                                                                                                                                                                                                                                                                               case kl_if_139 of
                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                             pat_cond_153 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                          in case kl_V1851th of
                                                                                                                                                                                                                                                                                 kl_V1851th@(Atom (UnboundSym "is")) -> pat_cond_138
                                                                                                                                                                                                                                                                                 kl_V1851th@(ApplC (PL "is"
                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_138
                                                                                                                                                                                                                                                                                 kl_V1851th@(ApplC (Func "is"
                                                                                                                                                                                                                                                                                                         _)) -> pat_cond_138
                                                                                                                                                                                                                                                                                 _ -> pat_cond_153
                                                                                                                                                                                                                                                           case kl_if_137 of
                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                         pat_cond_154 = do do return (Atom (B False))
                                                                                                                                                                                                      in case kl_V1851t of
                                                                                                                                                                                                             !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                               (!kl_V1851tt))) -> pat_cond_136 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                             _ -> pat_cond_154
                                                                                                                                                                                       case kl_if_135 of
                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                        pat_cond_155 = do do return (Atom (B False))
                                                                                                                                     in case kl_V1851 of
                                                                                                                                            !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                             (!kl_V1851t))) -> pat_cond_134 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                            _ -> pat_cond_155
                                                                                                                      case kl_if_133 of
                                                                                                                          Atom (B (True)) -> do !appl_156 <- kl_V1851 `pseq` hd kl_V1851
                                                                                                                                                let !appl_157 = Atom Nil
                                                                                                                                                !appl_158 <- appl_156 `pseq` (appl_157 `pseq` klCons appl_156 appl_157)
                                                                                                                                                appl_158 `pseq` klCons (ApplC (wrapNamed "shen.pvar?" kl_shen_pvarP)) appl_158
                                                                                                                          Atom (B (False)) -> do !kl_if_159 <- let pat_cond_160 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_161 <- let pat_cond_162 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_163 <- let pat_cond_164 = do !kl_if_165 <- let pat_cond_166 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_167 <- let pat_cond_168 = do !kl_if_169 <- let pat_cond_170 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_171 <- let pat_cond_172 = do !kl_if_173 <- let pat_cond_174 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do !kl_if_175 <- let pat_cond_176 = do let !appl_177 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !kl_if_178 <- appl_177 `pseq` (kl_V1851ttttt `pseq` eq appl_177 kl_V1851ttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_178 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_179 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1851tttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851tttth@(Atom (UnboundSym "list")) -> pat_cond_176
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851tttth@(ApplC (PL "list"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_176
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851tttth@(ApplC (Func "list"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_176
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_179
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_175 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     pat_cond_180 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (!kl_V1851ttttt))) -> pat_cond_174 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_180
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_173 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_181 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1851ttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1851ttth@(Atom (UnboundSym "shen.non-empty")) -> pat_cond_172
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1851ttth@(ApplC (PL "shen.non-empty"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _)) -> pat_cond_172
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1851ttth@(ApplC (Func "shen.non-empty"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_172
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_181
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_171 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                       pat_cond_182 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                    in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                           !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (!kl_V1851tttt))) -> pat_cond_170 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> pat_cond_182
                                                                                                                                                                                                                                                                                                                                                                                                                                     case kl_if_169 of
                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                   pat_cond_183 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                       kl_V1851tth@(Atom (UnboundSym "shen.a")) -> pat_cond_168
                                                                                                                                                                                                                                                                                                                                                                                                                       kl_V1851tth@(ApplC (PL "shen.a"
                                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_168
                                                                                                                                                                                                                                                                                                                                                                                                                       kl_V1851tth@(ApplC (Func "shen.a"
                                                                                                                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_168
                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_183
                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_167 of
                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                            pat_cond_184 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                         in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1851ttt))) -> pat_cond_166 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_184
                                                                                                                                                                                                                                                                                                                          case kl_if_165 of
                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                        pat_cond_185 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                     in case kl_V1851th of
                                                                                                                                                                                                                                                                                                            kl_V1851th@(Atom (UnboundSym "is")) -> pat_cond_164
                                                                                                                                                                                                                                                                                                            kl_V1851th@(ApplC (PL "is"
                                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_164
                                                                                                                                                                                                                                                                                                            kl_V1851th@(ApplC (Func "is"
                                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_164
                                                                                                                                                                                                                                                                                                            _ -> pat_cond_185
                                                                                                                                                                                                                                                                                      case kl_if_163 of
                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                    pat_cond_186 = do do return (Atom (B False))
                                                                                                                                                                                                                                 in case kl_V1851t of
                                                                                                                                                                                                                                        !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                          (!kl_V1851tt))) -> pat_cond_162 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                        _ -> pat_cond_186
                                                                                                                                                                                                                  case kl_if_161 of
                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                   pat_cond_187 = do do return (Atom (B False))
                                                                                                                                                                in case kl_V1851 of
                                                                                                                                                                       !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                        (!kl_V1851t))) -> pat_cond_160 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                       _ -> pat_cond_187
                                                                                                                                                 case kl_if_159 of
                                                                                                                                                     Atom (B (True)) -> do !appl_188 <- kl_V1851 `pseq` hd kl_V1851
                                                                                                                                                                           let !appl_189 = Atom Nil
                                                                                                                                                                           !appl_190 <- appl_188 `pseq` (appl_189 `pseq` klCons appl_188 appl_189)
                                                                                                                                                                           appl_190 `pseq` klCons (ApplC (wrapNamed "cons?" consP)) appl_190
                                                                                                                                                     Atom (B (False)) -> do !kl_if_191 <- let pat_cond_192 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_193 <- let pat_cond_194 = do !kl_if_195 <- let pat_cond_196 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_197 <- let pat_cond_198 = do !kl_if_199 <- let pat_cond_200 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_201 <- let pat_cond_202 = do !kl_if_203 <- let pat_cond_204 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_205 <- let pat_cond_206 = do !kl_if_207 <- let pat_cond_208 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do let !appl_209 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_210 <- appl_209 `pseq` (kl_V1851tttth `pseq` eq appl_209 kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !kl_if_211 <- case kl_if_210 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do !kl_if_212 <- let pat_cond_213 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt = do !kl_if_214 <- let pat_cond_215 = do !kl_if_216 <- let pat_cond_217 kl_V1851tttttt kl_V1851tttttth kl_V1851ttttttt = do !kl_if_218 <- let pat_cond_219 = do !kl_if_220 <- let pat_cond_221 kl_V1851ttttttt kl_V1851ttttttth kl_V1851tttttttt = do let !appl_222 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !kl_if_223 <- appl_222 `pseq` (kl_V1851tttttttt `pseq` eq appl_222 kl_V1851tttttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_223 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_224 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851ttttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !(kl_V1851ttttttt@(Cons (!kl_V1851ttttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1851tttttttt))) -> pat_cond_221 kl_V1851ttttttt kl_V1851ttttttth kl_V1851tttttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_224
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_220 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_225 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1851tttttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1851tttttth@(Atom (UnboundSym "shen.then")) -> pat_cond_219
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1851tttttth@(ApplC (PL "shen.then"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_219
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1851tttttth@(ApplC (Func "shen.then"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_219
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_225
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_218 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_226 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851tttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1851tttttt@(Cons (!kl_V1851tttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (!kl_V1851ttttttt))) -> pat_cond_217 kl_V1851tttttt kl_V1851tttttth kl_V1851ttttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_226
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_216 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_227 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851ttttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851ttttth@(Atom (UnboundSym "and")) -> pat_cond_215
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851ttttth@(ApplC (PL "and"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_215
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851ttttth@(ApplC (Func "and"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _)) -> pat_cond_215
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_227
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_214 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_228 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851ttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             !(kl_V1851ttttt@(Cons (!kl_V1851ttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1851tttttt))) -> pat_cond_213 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_228
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_212 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_211 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_229 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (!kl_V1851ttttt))) -> pat_cond_208 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_229
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_207 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_230 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1851ttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1851ttth@(Atom (UnboundSym "in")) -> pat_cond_206
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1851ttth@(ApplC (PL "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_206
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    kl_V1851ttth@(ApplC (Func "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_206
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_230
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_205 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_231 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (!kl_V1851tttt))) -> pat_cond_204 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_231
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_203 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_232 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851tth@(Atom (UnboundSym "shen.variables")) -> pat_cond_202
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851tth@(ApplC (PL "shen.variables"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _)) -> pat_cond_202
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851tth@(ApplC (Func "shen.variables"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_202
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_232
                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_201 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_233 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                  (!kl_V1851ttt))) -> pat_cond_200 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_233
                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_199 of
                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                       pat_cond_234 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                    in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                           kl_V1851th@(Atom (UnboundSym "shen.the")) -> pat_cond_198
                                                                                                                                                                                                                                                                                                                                                                           kl_V1851th@(ApplC (PL "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_198
                                                                                                                                                                                                                                                                                                                                                                           kl_V1851th@(ApplC (Func "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_198
                                                                                                                                                                                                                                                                                                                                                                           _ -> pat_cond_234
                                                                                                                                                                                                                                                                                                                                                     case kl_if_197 of
                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                   pat_cond_235 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                in case kl_V1851t of
                                                                                                                                                                                                                                                                                                       !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                         (!kl_V1851tt))) -> pat_cond_196 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                       _ -> pat_cond_235
                                                                                                                                                                                                                                                                                 case kl_if_195 of
                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                               pat_cond_236 = do do return (Atom (B False))
                                                                                                                                                                                                                                                            in case kl_V1851h of
                                                                                                                                                                                                                                                                   kl_V1851h@(Atom (UnboundSym "shen.rename")) -> pat_cond_194
                                                                                                                                                                                                                                                                   kl_V1851h@(ApplC (PL "shen.rename"
                                                                                                                                                                                                                                                                                        _)) -> pat_cond_194
                                                                                                                                                                                                                                                                   kl_V1851h@(ApplC (Func "shen.rename"
                                                                                                                                                                                                                                                                                          _)) -> pat_cond_194
                                                                                                                                                                                                                                                                   _ -> pat_cond_236
                                                                                                                                                                                                                                             case kl_if_193 of
                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                              pat_cond_237 = do do return (Atom (B False))
                                                                                                                                                                                           in case kl_V1851 of
                                                                                                                                                                                                  !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                   (!kl_V1851t))) -> pat_cond_192 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                  _ -> pat_cond_237
                                                                                                                                                                            case kl_if_191 of
                                                                                                                                                                                Atom (B (True)) -> do !appl_238 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                      !appl_239 <- appl_238 `pseq` tl appl_238
                                                                                                                                                                                                      !appl_240 <- appl_239 `pseq` tl appl_239
                                                                                                                                                                                                      !appl_241 <- appl_240 `pseq` tl appl_240
                                                                                                                                                                                                      !appl_242 <- appl_241 `pseq` tl appl_241
                                                                                                                                                                                                      !appl_243 <- appl_242 `pseq` tl appl_242
                                                                                                                                                                                                      !appl_244 <- appl_243 `pseq` tl appl_243
                                                                                                                                                                                                      !appl_245 <- appl_244 `pseq` hd appl_244
                                                                                                                                                                                                      appl_245 `pseq` kl_shen_aum_to_shen appl_245
                                                                                                                                                                                Atom (B (False)) -> do !kl_if_246 <- let pat_cond_247 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_248 <- let pat_cond_249 = do !kl_if_250 <- let pat_cond_251 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_252 <- let pat_cond_253 = do !kl_if_254 <- let pat_cond_255 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_256 <- let pat_cond_257 = do !kl_if_258 <- let pat_cond_259 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_260 <- let pat_cond_261 = do !kl_if_262 <- let pat_cond_263 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do !kl_if_264 <- let pat_cond_265 kl_V1851tttth kl_V1851tttthh kl_V1851ttttht = do !kl_if_266 <- let pat_cond_267 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt = do !kl_if_268 <- let pat_cond_269 = do !kl_if_270 <- let pat_cond_271 kl_V1851tttttt kl_V1851tttttth kl_V1851ttttttt = do !kl_if_272 <- let pat_cond_273 = do !kl_if_274 <- let pat_cond_275 kl_V1851ttttttt kl_V1851ttttttth kl_V1851tttttttt = do let !appl_276 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !kl_if_277 <- appl_276 `pseq` (kl_V1851tttttttt `pseq` eq appl_276 kl_V1851tttttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_277 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       pat_cond_278 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    in case kl_V1851ttttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !(kl_V1851ttttttt@(Cons (!kl_V1851ttttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (!kl_V1851tttttttt))) -> pat_cond_275 kl_V1851ttttttt kl_V1851ttttttth kl_V1851tttttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> pat_cond_278
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     case kl_if_274 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   pat_cond_279 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                in case kl_V1851tttttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       kl_V1851tttttth@(Atom (UnboundSym "shen.then")) -> pat_cond_273
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       kl_V1851tttttth@(ApplC (PL "shen.then"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_273
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       kl_V1851tttttth@(ApplC (Func "shen.then"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_273
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_279
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_272 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_280 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1851tttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !(kl_V1851tttttt@(Cons (!kl_V1851tttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1851ttttttt))) -> pat_cond_271 kl_V1851tttttt kl_V1851tttttth kl_V1851ttttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_280
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_270 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_281 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1851ttttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                kl_V1851ttttth@(Atom (UnboundSym "and")) -> pat_cond_269
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                kl_V1851ttttth@(ApplC (PL "and"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_269
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                kl_V1851ttttth@(ApplC (Func "and"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_269
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_281
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_268 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_282 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1851ttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                !(kl_V1851ttttt@(Cons (!kl_V1851ttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1851tttttt))) -> pat_cond_267 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_282
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_266 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_283 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1851tttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                !(kl_V1851tttth@(Cons (!kl_V1851tttthh)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1851ttttht))) -> pat_cond_265 kl_V1851tttth kl_V1851tttthh kl_V1851ttttht
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_283
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_264 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_284 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (!kl_V1851ttttt))) -> pat_cond_263 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_284
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_262 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_285 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1851ttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               kl_V1851ttth@(Atom (UnboundSym "in")) -> pat_cond_261
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               kl_V1851ttth@(ApplC (PL "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_261
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               kl_V1851ttth@(ApplC (Func "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _)) -> pat_cond_261
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_285
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_260 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_286 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (!kl_V1851tttt))) -> pat_cond_259 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_286
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_258 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_287 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1851tth@(Atom (UnboundSym "shen.variables")) -> pat_cond_257
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1851tth@(ApplC (PL "shen.variables"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _)) -> pat_cond_257
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1851tth@(ApplC (Func "shen.variables"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_257
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_287
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_256 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_288 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                             (!kl_V1851ttt))) -> pat_cond_255 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_288
                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_254 of
                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_289 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851th@(Atom (UnboundSym "shen.the")) -> pat_cond_253
                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851th@(ApplC (PL "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_253
                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851th@(ApplC (Func "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_253
                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_289
                                                                                                                                                                                                                                                                                                                                                                                case kl_if_252 of
                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                              pat_cond_290 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                           in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                  !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                    (!kl_V1851tt))) -> pat_cond_251 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_290
                                                                                                                                                                                                                                                                                                            case kl_if_250 of
                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                          pat_cond_291 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                       in case kl_V1851h of
                                                                                                                                                                                                                                                                                              kl_V1851h@(Atom (UnboundSym "shen.rename")) -> pat_cond_249
                                                                                                                                                                                                                                                                                              kl_V1851h@(ApplC (PL "shen.rename"
                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_249
                                                                                                                                                                                                                                                                                              kl_V1851h@(ApplC (Func "shen.rename"
                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_249
                                                                                                                                                                                                                                                                                              _ -> pat_cond_291
                                                                                                                                                                                                                                                                        case kl_if_248 of
                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                         pat_cond_292 = do do return (Atom (B False))
                                                                                                                                                                                                                      in case kl_V1851 of
                                                                                                                                                                                                                             !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                              (!kl_V1851t))) -> pat_cond_247 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                             _ -> pat_cond_292
                                                                                                                                                                                                       case kl_if_246 of
                                                                                                                                                                                                           Atom (B (True)) -> do !appl_293 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                 !appl_294 <- appl_293 `pseq` tl appl_293
                                                                                                                                                                                                                                 !appl_295 <- appl_294 `pseq` tl appl_294
                                                                                                                                                                                                                                 !appl_296 <- appl_295 `pseq` tl appl_295
                                                                                                                                                                                                                                 !appl_297 <- appl_296 `pseq` hd appl_296
                                                                                                                                                                                                                                 !appl_298 <- appl_297 `pseq` hd appl_297
                                                                                                                                                                                                                                 let !appl_299 = Atom Nil
                                                                                                                                                                                                                                 !appl_300 <- appl_299 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_299
                                                                                                                                                                                                                                 !appl_301 <- appl_300 `pseq` klCons (ApplC (wrapNamed "shen.newpv" kl_shen_newpv)) appl_300
                                                                                                                                                                                                                                 !appl_302 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                 !appl_303 <- appl_302 `pseq` tl appl_302
                                                                                                                                                                                                                                 !appl_304 <- appl_303 `pseq` tl appl_303
                                                                                                                                                                                                                                 !appl_305 <- appl_304 `pseq` tl appl_304
                                                                                                                                                                                                                                 !appl_306 <- appl_305 `pseq` hd appl_305
                                                                                                                                                                                                                                 !appl_307 <- appl_306 `pseq` tl appl_306
                                                                                                                                                                                                                                 !appl_308 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                 !appl_309 <- appl_308 `pseq` tl appl_308
                                                                                                                                                                                                                                 !appl_310 <- appl_309 `pseq` tl appl_309
                                                                                                                                                                                                                                 !appl_311 <- appl_310 `pseq` tl appl_310
                                                                                                                                                                                                                                 !appl_312 <- appl_311 `pseq` tl appl_311
                                                                                                                                                                                                                                 !appl_313 <- appl_307 `pseq` (appl_312 `pseq` klCons appl_307 appl_312)
                                                                                                                                                                                                                                 !appl_314 <- appl_313 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "in")) appl_313
                                                                                                                                                                                                                                 !appl_315 <- appl_314 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.variables")) appl_314
                                                                                                                                                                                                                                 !appl_316 <- appl_315 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.the")) appl_315
                                                                                                                                                                                                                                 !appl_317 <- appl_316 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "shen.rename")) appl_316
                                                                                                                                                                                                                                 !appl_318 <- appl_317 `pseq` kl_shen_aum_to_shen appl_317
                                                                                                                                                                                                                                 let !appl_319 = Atom Nil
                                                                                                                                                                                                                                 !appl_320 <- appl_318 `pseq` (appl_319 `pseq` klCons appl_318 appl_319)
                                                                                                                                                                                                                                 !appl_321 <- appl_301 `pseq` (appl_320 `pseq` klCons appl_301 appl_320)
                                                                                                                                                                                                                                 !appl_322 <- appl_298 `pseq` (appl_321 `pseq` klCons appl_298 appl_321)
                                                                                                                                                                                                                                 appl_322 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_322
                                                                                                                                                                                                           Atom (B (False)) -> do !kl_if_323 <- let pat_cond_324 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_325 <- let pat_cond_326 = do !kl_if_327 <- let pat_cond_328 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_329 <- let pat_cond_330 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_331 <- let pat_cond_332 = do !kl_if_333 <- let pat_cond_334 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_335 <- let pat_cond_336 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do !kl_if_337 <- let pat_cond_338 = do !kl_if_339 <- let pat_cond_340 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt = do let !appl_341 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !kl_if_342 <- appl_341 `pseq` (kl_V1851tttttt `pseq` eq appl_341 kl_V1851tttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_342 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   pat_cond_343 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                in case kl_V1851ttttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       !(kl_V1851ttttt@(Cons (!kl_V1851ttttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (!kl_V1851tttttt))) -> pat_cond_340 kl_V1851ttttt kl_V1851ttttth kl_V1851tttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_343
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_339 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_344 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1851tttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tttth@(Atom (UnboundSym "in")) -> pat_cond_338
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tttth@(ApplC (PL "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_338
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tttth@(ApplC (Func "in"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_338
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_344
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_337 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_345 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1851ttttt))) -> pat_cond_336 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_345
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_335 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        pat_cond_346 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1851tttt))) -> pat_cond_334 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_346
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      case kl_if_333 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_347 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(Atom (UnboundSym "shen.to")) -> pat_cond_332
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(ApplC (PL "shen.to"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_332
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(ApplC (Func "shen.to"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_332
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_347
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_331 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_348 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                    (!kl_V1851ttt))) -> pat_cond_330 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_348
                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_329 of
                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                         pat_cond_349 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                                             !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                                               (!kl_V1851tt))) -> pat_cond_328 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_349
                                                                                                                                                                                                                                                                                                                                       case kl_if_327 of
                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                     pat_cond_350 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                  in case kl_V1851h of
                                                                                                                                                                                                                                                                                                                         kl_V1851h@(Atom (UnboundSym "bind")) -> pat_cond_326
                                                                                                                                                                                                                                                                                                                         kl_V1851h@(ApplC (PL "bind"
                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_326
                                                                                                                                                                                                                                                                                                                         kl_V1851h@(ApplC (Func "bind"
                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_326
                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_350
                                                                                                                                                                                                                                                                                                   case kl_if_325 of
                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                    pat_cond_351 = do do return (Atom (B False))
                                                                                                                                                                                                                                                 in case kl_V1851 of
                                                                                                                                                                                                                                                        !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                                                         (!kl_V1851t))) -> pat_cond_324 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                                                        _ -> pat_cond_351
                                                                                                                                                                                                                                  case kl_if_323 of
                                                                                                                                                                                                                                      Atom (B (True)) -> do !appl_352 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                            !appl_353 <- appl_352 `pseq` hd appl_352
                                                                                                                                                                                                                                                            !appl_354 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                            !appl_355 <- appl_354 `pseq` tl appl_354
                                                                                                                                                                                                                                                            !appl_356 <- appl_355 `pseq` tl appl_355
                                                                                                                                                                                                                                                            !appl_357 <- appl_356 `pseq` hd appl_356
                                                                                                                                                                                                                                                            !appl_358 <- appl_357 `pseq` kl_shen_chwild appl_357
                                                                                                                                                                                                                                                            let !appl_359 = Atom Nil
                                                                                                                                                                                                                                                            !appl_360 <- appl_359 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_359
                                                                                                                                                                                                                                                            !appl_361 <- appl_358 `pseq` (appl_360 `pseq` klCons appl_358 appl_360)
                                                                                                                                                                                                                                                            !appl_362 <- appl_353 `pseq` (appl_361 `pseq` klCons appl_353 appl_361)
                                                                                                                                                                                                                                                            !appl_363 <- appl_362 `pseq` klCons (ApplC (wrapNamed "shen.bindv" kl_shen_bindv)) appl_362
                                                                                                                                                                                                                                                            !appl_364 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                            !appl_365 <- appl_364 `pseq` tl appl_364
                                                                                                                                                                                                                                                            !appl_366 <- appl_365 `pseq` tl appl_365
                                                                                                                                                                                                                                                            !appl_367 <- appl_366 `pseq` tl appl_366
                                                                                                                                                                                                                                                            !appl_368 <- appl_367 `pseq` tl appl_367
                                                                                                                                                                                                                                                            !appl_369 <- appl_368 `pseq` hd appl_368
                                                                                                                                                                                                                                                            !appl_370 <- appl_369 `pseq` kl_shen_aum_to_shen appl_369
                                                                                                                                                                                                                                                            !appl_371 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                            !appl_372 <- appl_371 `pseq` hd appl_371
                                                                                                                                                                                                                                                            let !appl_373 = Atom Nil
                                                                                                                                                                                                                                                            !appl_374 <- appl_373 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_373
                                                                                                                                                                                                                                                            !appl_375 <- appl_372 `pseq` (appl_374 `pseq` klCons appl_372 appl_374)
                                                                                                                                                                                                                                                            !appl_376 <- appl_375 `pseq` klCons (ApplC (wrapNamed "shen.unbindv" kl_shen_unbindv)) appl_375
                                                                                                                                                                                                                                                            let !appl_377 = Atom Nil
                                                                                                                                                                                                                                                            !appl_378 <- appl_377 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Result")) appl_377
                                                                                                                                                                                                                                                            !appl_379 <- appl_376 `pseq` (appl_378 `pseq` klCons appl_376 appl_378)
                                                                                                                                                                                                                                                            !appl_380 <- appl_379 `pseq` klCons (ApplC (wrapNamed "do" kl_do)) appl_379
                                                                                                                                                                                                                                                            let !appl_381 = Atom Nil
                                                                                                                                                                                                                                                            !appl_382 <- appl_380 `pseq` (appl_381 `pseq` klCons appl_380 appl_381)
                                                                                                                                                                                                                                                            !appl_383 <- appl_370 `pseq` (appl_382 `pseq` klCons appl_370 appl_382)
                                                                                                                                                                                                                                                            !appl_384 <- appl_383 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Result")) appl_383
                                                                                                                                                                                                                                                            !appl_385 <- appl_384 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "let")) appl_384
                                                                                                                                                                                                                                                            let !appl_386 = Atom Nil
                                                                                                                                                                                                                                                            !appl_387 <- appl_385 `pseq` (appl_386 `pseq` klCons appl_385 appl_386)
                                                                                                                                                                                                                                                            !appl_388 <- appl_363 `pseq` (appl_387 `pseq` klCons appl_363 appl_387)
                                                                                                                                                                                                                                                            appl_388 `pseq` klCons (ApplC (wrapNamed "do" kl_do)) appl_388
                                                                                                                                                                                                                                      Atom (B (False)) -> do !kl_if_389 <- let pat_cond_390 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_391 <- let pat_cond_392 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_393 <- let pat_cond_394 = do !kl_if_395 <- let pat_cond_396 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_397 <- let pat_cond_398 = do !kl_if_399 <- let pat_cond_400 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do !kl_if_401 <- let pat_cond_402 = do !kl_if_403 <- let pat_cond_404 kl_V1851tttt kl_V1851tttth kl_V1851ttttt = do let !appl_405 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            !kl_if_406 <- appl_405 `pseq` (kl_V1851ttttt `pseq` eq appl_405 kl_V1851ttttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            case kl_if_406 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_407 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1851tttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     !(kl_V1851tttt@(Cons (!kl_V1851tttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (!kl_V1851ttttt))) -> pat_cond_404 kl_V1851tttt kl_V1851tttth kl_V1851ttttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_407
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_403 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_408 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851ttth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1851ttth@(Atom (UnboundSym "shen.to")) -> pat_cond_402
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1851ttth@(ApplC (PL "shen.to"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _)) -> pat_cond_402
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kl_V1851ttth@(ApplC (Func "shen.to"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _)) -> pat_cond_402
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_408
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_401 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   pat_cond_409 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1851tttt))) -> pat_cond_400 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_409
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_399 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_410 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tth@(Atom (UnboundSym "identical")) -> pat_cond_398
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tth@(ApplC (PL "identical"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_398
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tth@(ApplC (Func "identical"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_398
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_410
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_397 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                        pat_cond_411 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                     in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                            !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (!kl_V1851ttt))) -> pat_cond_396 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_411
                                                                                                                                                                                                                                                                                                                                                                                                                                      case kl_if_395 of
                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_412 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851th@(Atom (UnboundSym "is")) -> pat_cond_394
                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851th@(ApplC (PL "is"
                                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_394
                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851th@(ApplC (Func "is"
                                                                                                                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_394
                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_412
                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_393 of
                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                pat_cond_413 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                             in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                                    !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1851tt))) -> pat_cond_392 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_413
                                                                                                                                                                                                                                                                                                                              case kl_if_391 of
                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                               pat_cond_414 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                            in case kl_V1851 of
                                                                                                                                                                                                                                                                                   !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                                                                                    (!kl_V1851t))) -> pat_cond_390 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                                                                                   _ -> pat_cond_414
                                                                                                                                                                                                                                                             case kl_if_389 of
                                                                                                                                                                                                                                                                 Atom (B (True)) -> do !appl_415 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                                                       !appl_416 <- appl_415 `pseq` tl appl_415
                                                                                                                                                                                                                                                                                       !appl_417 <- appl_416 `pseq` tl appl_416
                                                                                                                                                                                                                                                                                       !appl_418 <- appl_417 `pseq` tl appl_417
                                                                                                                                                                                                                                                                                       !appl_419 <- appl_418 `pseq` hd appl_418
                                                                                                                                                                                                                                                                                       !appl_420 <- kl_V1851 `pseq` hd kl_V1851
                                                                                                                                                                                                                                                                                       let !appl_421 = Atom Nil
                                                                                                                                                                                                                                                                                       !appl_422 <- appl_420 `pseq` (appl_421 `pseq` klCons appl_420 appl_421)
                                                                                                                                                                                                                                                                                       !appl_423 <- appl_419 `pseq` (appl_422 `pseq` klCons appl_419 appl_422)
                                                                                                                                                                                                                                                                                       appl_423 `pseq` klCons (ApplC (wrapNamed "=" eq)) appl_423
                                                                                                                                                                                                                                                                 Atom (B (False)) -> do let pat_cond_424 = do return (Atom (B False))
                                                                                                                                                                                                                                                                                            pat_cond_425 = do !kl_if_426 <- let pat_cond_427 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_428 <- let pat_cond_429 = do !kl_if_430 <- let pat_cond_431 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_432 <- let pat_cond_433 = do !kl_if_434 <- let pat_cond_435 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_436 <- let pat_cond_437 = do !kl_if_438 <- let pat_cond_439 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do let !appl_440 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                !kl_if_441 <- appl_440 `pseq` (kl_V1851tttt `pseq` eq appl_440 kl_V1851tttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_441 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        pat_cond_442 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1851tttt))) -> pat_cond_439 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_442
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      case kl_if_438 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_443 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(Atom (UnboundSym "shen.of")) -> pat_cond_437
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(ApplC (PL "shen.of"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _)) -> pat_cond_437
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851tth@(ApplC (Func "shen.of"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _)) -> pat_cond_437
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_443
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_436 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             pat_cond_444 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (!kl_V1851ttt))) -> pat_cond_435 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> pat_cond_444
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_434 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_445 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851th@(Atom (UnboundSym "head")) -> pat_cond_433
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851th@(ApplC (PL "head"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _)) -> pat_cond_433
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             kl_V1851th@(ApplC (Func "head"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_433
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_445
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_432 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                     pat_cond_446 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                  in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                                                                                                                         !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1851tt))) -> pat_cond_431 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_446
                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_430 of
                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_447 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1851h of
                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1851h@(Atom (UnboundSym "shen.the")) -> pat_cond_429
                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1851h@(ApplC (PL "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_429
                                                                                                                                                                                                                                                                                                                                                                                                     kl_V1851h@(ApplC (Func "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_429
                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_447
                                                                                                                                                                                                                                                                                                                                                                               case kl_if_428 of
                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                pat_cond_448 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                             in case kl_V1851 of
                                                                                                                                                                                                                                                                                                                                    !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                                                                                                                                     (!kl_V1851t))) -> pat_cond_427 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_448
                                                                                                                                                                                                                                                                                                              case kl_if_426 of
                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do !appl_449 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                                                                                                        !appl_450 <- appl_449 `pseq` tl appl_449
                                                                                                                                                                                                                                                                                                                                        !appl_451 <- appl_450 `pseq` tl appl_450
                                                                                                                                                                                                                                                                                                                                        appl_451 `pseq` klCons (ApplC (wrapNamed "hd" hd)) appl_451
                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do !kl_if_452 <- let pat_cond_453 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_454 <- let pat_cond_455 = do !kl_if_456 <- let pat_cond_457 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_458 <- let pat_cond_459 = do !kl_if_460 <- let pat_cond_461 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_462 <- let pat_cond_463 = do !kl_if_464 <- let pat_cond_465 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do let !appl_466 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           !kl_if_467 <- appl_466 `pseq` (kl_V1851tttt `pseq` eq appl_466 kl_V1851tttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           case kl_if_467 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   pat_cond_468 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1851tttt))) -> pat_cond_465 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_468
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_464 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_469 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tth@(Atom (UnboundSym "shen.of")) -> pat_cond_463
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tth@(ApplC (PL "shen.of"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _)) -> pat_cond_463
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851tth@(ApplC (Func "shen.of"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _)) -> pat_cond_463
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_469
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_462 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        pat_cond_470 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (!kl_V1851ttt))) -> pat_cond_461 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> pat_cond_470
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      case kl_if_460 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    pat_cond_471 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851th@(Atom (UnboundSym "tail")) -> pat_cond_459
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851th@(ApplC (PL "tail"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _)) -> pat_cond_459
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        kl_V1851th@(ApplC (Func "tail"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_459
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> pat_cond_471
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  case kl_if_458 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                pat_cond_472 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                             in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1851tt))) -> pat_cond_457 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> pat_cond_472
                                                                                                                                                                                                                                                                                                                                                                                                                                              case kl_if_456 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                            pat_cond_473 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                         in case kl_V1851h of
                                                                                                                                                                                                                                                                                                                                                                                                                                kl_V1851h@(Atom (UnboundSym "shen.the")) -> pat_cond_455
                                                                                                                                                                                                                                                                                                                                                                                                                                kl_V1851h@(ApplC (PL "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_455
                                                                                                                                                                                                                                                                                                                                                                                                                                kl_V1851h@(ApplC (Func "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_455
                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> pat_cond_473
                                                                                                                                                                                                                                                                                                                                                                                                          case kl_if_454 of
                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                              Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                              _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                           pat_cond_474 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                        in case kl_V1851 of
                                                                                                                                                                                                                                                                                                                                                               !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                                                                                                                                                                (!kl_V1851t))) -> pat_cond_453 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_474
                                                                                                                                                                                                                                                                                                                                         case kl_if_452 of
                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do !appl_475 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                                                                                                                                   !appl_476 <- appl_475 `pseq` tl appl_475
                                                                                                                                                                                                                                                                                                                                                                   !appl_477 <- appl_476 `pseq` tl appl_476
                                                                                                                                                                                                                                                                                                                                                                   appl_477 `pseq` klCons (ApplC (wrapNamed "tl" tl)) appl_477
                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do !kl_if_478 <- let pat_cond_479 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_480 <- let pat_cond_481 = do !kl_if_482 <- let pat_cond_483 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_484 <- let pat_cond_485 = do !kl_if_486 <- let pat_cond_487 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_488 <- let pat_cond_489 = do let !appl_490 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            !kl_if_491 <- appl_490 `pseq` (kl_V1851ttt `pseq` eq appl_490 kl_V1851ttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            case kl_if_491 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          pat_cond_492 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              kl_V1851tth@(Atom (UnboundSym "shen.stack")) -> pat_cond_489
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              kl_V1851tth@(ApplC (PL "shen.stack"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _)) -> pat_cond_489
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              kl_V1851tth@(ApplC (Func "shen.stack"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _)) -> pat_cond_489
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> pat_cond_492
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_488 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   pat_cond_493 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (!kl_V1851ttt))) -> pat_cond_487 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> pat_cond_493
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_486 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               pat_cond_494 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851th@(Atom (UnboundSym "shen.the")) -> pat_cond_485
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851th@(ApplC (PL "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _)) -> pat_cond_485
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   kl_V1851th@(ApplC (Func "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _)) -> pat_cond_485
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ -> pat_cond_494
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             case kl_if_484 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           pat_cond_495 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (!kl_V1851tt))) -> pat_cond_483 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               _ -> pat_cond_495
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         case kl_if_482 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                       pat_cond_496 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                    in case kl_V1851h of
                                                                                                                                                                                                                                                                                                                                                                                                                                                           kl_V1851h@(Atom (UnboundSym "shen.pop")) -> pat_cond_481
                                                                                                                                                                                                                                                                                                                                                                                                                                                           kl_V1851h@(ApplC (PL "shen.pop"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_481
                                                                                                                                                                                                                                                                                                                                                                                                                                                           kl_V1851h@(ApplC (Func "shen.pop"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_481
                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> pat_cond_496
                                                                                                                                                                                                                                                                                                                                                                                                                                     case kl_if_480 of
                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                         Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_497 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1851 of
                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                                                                                                                                                                                           (!kl_V1851t))) -> pat_cond_479 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_497
                                                                                                                                                                                                                                                                                                                                                                    case kl_if_478 of
                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do let !appl_498 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                              !appl_499 <- appl_498 `pseq` klCons (ApplC (PL "shen.incinfs" kl_shen_incinfs)) appl_498
                                                                                                                                                                                                                                                                                                                                                                                              let !appl_500 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                              !appl_501 <- appl_500 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "Continuation")) appl_500
                                                                                                                                                                                                                                                                                                                                                                                              !appl_502 <- appl_501 `pseq` klCons (ApplC (wrapNamed "thaw" kl_thaw)) appl_501
                                                                                                                                                                                                                                                                                                                                                                                              let !appl_503 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                              !appl_504 <- appl_502 `pseq` (appl_503 `pseq` klCons appl_502 appl_503)
                                                                                                                                                                                                                                                                                                                                                                                              !appl_505 <- appl_499 `pseq` (appl_504 `pseq` klCons appl_499 appl_504)
                                                                                                                                                                                                                                                                                                                                                                                              appl_505 `pseq` klCons (ApplC (wrapNamed "do" kl_do)) appl_505
                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do !kl_if_506 <- let pat_cond_507 kl_V1851 kl_V1851h kl_V1851t = do !kl_if_508 <- let pat_cond_509 = do !kl_if_510 <- let pat_cond_511 kl_V1851t kl_V1851th kl_V1851tt = do !kl_if_512 <- let pat_cond_513 = do !kl_if_514 <- let pat_cond_515 kl_V1851tt kl_V1851tth kl_V1851ttt = do !kl_if_516 <- let pat_cond_517 = do !kl_if_518 <- let pat_cond_519 kl_V1851ttt kl_V1851ttth kl_V1851tttt = do let !appl_520 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !kl_if_521 <- appl_520 `pseq` (kl_V1851tttt `pseq` eq appl_520 kl_V1851tttt)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 case kl_if_521 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         pat_cond_522 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      in case kl_V1851ttt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             !(kl_V1851ttt@(Cons (!kl_V1851ttth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (!kl_V1851tttt))) -> pat_cond_519 kl_V1851ttt kl_V1851ttth kl_V1851tttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _ -> pat_cond_522
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       case kl_if_518 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     pat_cond_523 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  in case kl_V1851tth of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         kl_V1851tth@(Atom (UnboundSym "shen.continuation")) -> pat_cond_517
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         kl_V1851tth@(ApplC (PL "shen.continuation"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _)) -> pat_cond_517
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         kl_V1851tth@(ApplC (Func "shen.continuation"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _)) -> pat_cond_517
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         _ -> pat_cond_523
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   case kl_if_516 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              pat_cond_524 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           in case kl_V1851tt of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !(kl_V1851tt@(Cons (!kl_V1851tth)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (!kl_V1851ttt))) -> pat_cond_515 kl_V1851tt kl_V1851tth kl_V1851ttt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _ -> pat_cond_524
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            case kl_if_514 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          pat_cond_525 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       in case kl_V1851th of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              kl_V1851th@(Atom (UnboundSym "shen.the")) -> pat_cond_513
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              kl_V1851th@(ApplC (PL "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_513
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              kl_V1851th@(ApplC (Func "shen.the"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_513
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _ -> pat_cond_525
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        case kl_if_512 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      pat_cond_526 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   in case kl_V1851t of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          !(kl_V1851t@(Cons (!kl_V1851th)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (!kl_V1851tt))) -> pat_cond_511 kl_V1851t kl_V1851th kl_V1851tt
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _ -> pat_cond_526
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case kl_if_510 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  pat_cond_527 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               in case kl_V1851h of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851h@(Atom (UnboundSym "call")) -> pat_cond_509
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851h@(ApplC (PL "call"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           _)) -> pat_cond_509
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      kl_V1851h@(ApplC (Func "call"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             _)) -> pat_cond_509
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _ -> pat_cond_527
                                                                                                                                                                                                                                                                                                                                                                                                                                                                case kl_if_508 of
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                                                                 pat_cond_528 = do do return (Atom (B False))
                                                                                                                                                                                                                                                                                                                                                                                                              in case kl_V1851 of
                                                                                                                                                                                                                                                                                                                                                                                                                     !(kl_V1851@(Cons (!kl_V1851h)
                                                                                                                                                                                                                                                                                                                                                                                                                                      (!kl_V1851t))) -> pat_cond_507 kl_V1851 kl_V1851h kl_V1851t
                                                                                                                                                                                                                                                                                                                                                                                                                     _ -> pat_cond_528
                                                                                                                                                                                                                                                                                                                                                                                               case kl_if_506 of
                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (True)) -> do let !appl_529 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_530 <- appl_529 `pseq` klCons (ApplC (PL "shen.incinfs" kl_shen_incinfs)) appl_529
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_531 <- kl_V1851 `pseq` tl kl_V1851
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_532 <- appl_531 `pseq` tl appl_531
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_533 <- appl_532 `pseq` tl appl_532
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_534 <- appl_533 `pseq` hd appl_533
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_535 <- appl_534 `pseq` kl_shen_chwild appl_534
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_536 <- appl_535 `pseq` kl_shen_call_the_continuation appl_535 (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) (Core.Types.Atom (Core.Types.UnboundSym "Continuation"))
                                                                                                                                                                                                                                                                                                                                                                                                                         let !appl_537 = Atom Nil
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_538 <- appl_536 `pseq` (appl_537 `pseq` klCons appl_536 appl_537)
                                                                                                                                                                                                                                                                                                                                                                                                                         !appl_539 <- appl_530 `pseq` (appl_538 `pseq` klCons appl_530 appl_538)
                                                                                                                                                                                                                                                                                                                                                                                                                         appl_539 `pseq` klCons (ApplC (wrapNamed "do" kl_do)) appl_539
                                                                                                                                                                                                                                                                                                                                                                                                   Atom (B (False)) -> do do return kl_V1851
                                                                                                                                                                                                                                                                                                                                                                                                   _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                                                                         in case kl_V1851 of
                                                                                                                                                                                                                                                                                                kl_V1851@(Atom (UnboundSym "shen.failed!")) -> pat_cond_424
                                                                                                                                                                                                                                                                                                kl_V1851@(ApplC (PL "shen.failed!"
                                                                                                                                                                                                                                                                                                                    _)) -> pat_cond_424
                                                                                                                                                                                                                                                                                                kl_V1851@(ApplC (Func "shen.failed!"
                                                                                                                                                                                                                                                                                                                      _)) -> pat_cond_424
                                                                                                                                                                                                                                                                                                _ -> pat_cond_425
                                                                                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                      _ -> throwError "if: expected boolean"
                                                                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                               _ -> throwError "if: expected boolean"
                                                                    _ -> throwError "if: expected boolean"
                                         _ -> throwError "if: expected boolean"

kl_shen_chwild :: Core.Types.KLValue ->
                  Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_chwild (!kl_V1853) = do let pat_cond_0 = do let !appl_1 = Atom Nil
                                                    !appl_2 <- appl_1 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "ProcessN")) appl_1
                                                    appl_2 `pseq` klCons (ApplC (wrapNamed "shen.newpv" kl_shen_newpv)) appl_2
                                    pat_cond_3 kl_V1853 kl_V1853h kl_V1853t = do let !appl_4 = ApplC (Func "lambda" (Context (\(!kl_Z) -> do kl_Z `pseq` kl_shen_chwild kl_Z)))
                                                                                 appl_4 `pseq` (kl_V1853 `pseq` kl_map appl_4 kl_V1853)
                                    pat_cond_5 = do do return kl_V1853
                                 in case kl_V1853 of
                                        kl_V1853@(Atom (UnboundSym "_")) -> pat_cond_0
                                        kl_V1853@(ApplC (PL "_" _)) -> pat_cond_0
                                        kl_V1853@(ApplC (Func "_" _)) -> pat_cond_0
                                        !(kl_V1853@(Cons (!kl_V1853h)
                                                         (!kl_V1853t))) -> pat_cond_3 kl_V1853 kl_V1853h kl_V1853t
                                        _ -> pat_cond_5

kl_shen_newpv :: Core.Types.KLValue ->
                 Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_newpv (!kl_V1855) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_CountPlus1) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_IncVar) -> do let !appl_2 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do let !appl_3 = ApplC (Func "lambda" (Context (\(!kl_ResizeVectorIfNeeded) -> do kl_CountPlus1 `pseq` kl_shen_mk_pvar kl_CountPlus1)))
                                                                                                                                                                                                                                      !appl_4 <- kl_Vector `pseq` kl_limit kl_Vector
                                                                                                                                                                                                                                      !kl_if_5 <- kl_CountPlus1 `pseq` (appl_4 `pseq` eq kl_CountPlus1 appl_4)
                                                                                                                                                                                                                                      !appl_6 <- case kl_if_5 of
                                                                                                                                                                                                                                                     Atom (B (True)) -> do kl_V1855 `pseq` (kl_CountPlus1 `pseq` kl_shen_resizeprocessvector kl_V1855 kl_CountPlus1)
                                                                                                                                                                                                                                                     Atom (B (False)) -> do do return (Core.Types.Atom (Core.Types.UnboundSym "shen.skip"))
                                                                                                                                                                                                                                                     _ -> throwError "if: expected boolean"
                                                                                                                                                                                                                                      appl_6 `pseq` applyWrapper appl_3 [appl_6])))
                                                                                                                                                                     !appl_7 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                                                                                                                                                     !appl_8 <- appl_7 `pseq` (kl_V1855 `pseq` addressFrom appl_7 kl_V1855)
                                                                                                                                                                     appl_8 `pseq` applyWrapper appl_2 [appl_8])))
                                                                                                    !appl_9 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*varcounter*"))
                                                                                                    !appl_10 <- appl_9 `pseq` (kl_V1855 `pseq` (kl_CountPlus1 `pseq` addressTo appl_9 kl_V1855 kl_CountPlus1))
                                                                                                    appl_10 `pseq` applyWrapper appl_1 [appl_10])))
                               !appl_11 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*varcounter*"))
                               !appl_12 <- appl_11 `pseq` (kl_V1855 `pseq` addressFrom appl_11 kl_V1855)
                               !appl_13 <- appl_12 `pseq` add appl_12 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                               appl_13 `pseq` applyWrapper appl_0 [appl_13]

kl_shen_resizeprocessvector :: Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_resizeprocessvector (!kl_V1858) (!kl_V1859) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_BigVector) -> do !appl_2 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                                                                                                                                                                              appl_2 `pseq` (kl_V1858 `pseq` (kl_BigVector `pseq` addressTo appl_2 kl_V1858 kl_BigVector)))))
                                                                                                                          !appl_3 <- kl_V1859 `pseq` (kl_V1859 `pseq` add kl_V1859 kl_V1859)
                                                                                                                          !appl_4 <- kl_Vector `pseq` (appl_3 `pseq` kl_shen_resize_vector kl_Vector appl_3 (Core.Types.Atom (Core.Types.UnboundSym "shen.-null-")))
                                                                                                                          appl_4 `pseq` applyWrapper appl_1 [appl_4])))
                                                         !appl_5 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                                         !appl_6 <- appl_5 `pseq` (kl_V1858 `pseq` addressFrom appl_5 kl_V1858)
                                                         appl_6 `pseq` applyWrapper appl_0 [appl_6]

kl_shen_resize_vector :: Core.Types.KLValue ->
                         Core.Types.KLValue ->
                         Core.Types.KLValue ->
                         Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_resize_vector (!kl_V1863) (!kl_V1864) (!kl_V1865) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_BigVector) -> do !appl_1 <- kl_V1863 `pseq` kl_limit kl_V1863
                                                                                                                                   kl_V1863 `pseq` (kl_BigVector `pseq` (appl_1 `pseq` (kl_V1864 `pseq` (kl_V1865 `pseq` kl_shen_copy_vector kl_V1863 kl_BigVector appl_1 kl_V1864 kl_V1865)))))))
                                                               !appl_2 <- kl_V1864 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V1864
                                                               !appl_3 <- appl_2 `pseq` absvector appl_2
                                                               !appl_4 <- appl_3 `pseq` (kl_V1864 `pseq` addressTo appl_3 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) kl_V1864)
                                                               appl_4 `pseq` applyWrapper appl_0 [appl_4]

kl_shen_copy_vector :: Core.Types.KLValue ->
                       Core.Types.KLValue ->
                       Core.Types.KLValue ->
                       Core.Types.KLValue ->
                       Core.Types.KLValue ->
                       Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_copy_vector (!kl_V1871) (!kl_V1872) (!kl_V1873) (!kl_V1874) (!kl_V1875) = do !appl_0 <- kl_V1873 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V1873
                                                                                     !appl_1 <- kl_V1874 `pseq` add kl_V1874 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                     !appl_2 <- kl_V1873 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V1873
                                                                                     !appl_3 <- kl_V1871 `pseq` (kl_V1872 `pseq` (appl_2 `pseq` kl_shen_copy_vector_stage_1 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V1871 kl_V1872 appl_2))
                                                                                     appl_0 `pseq` (appl_1 `pseq` (kl_V1875 `pseq` (appl_3 `pseq` kl_shen_copy_vector_stage_2 appl_0 appl_1 kl_V1875 appl_3)))

kl_shen_copy_vector_stage_1 :: Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_copy_vector_stage_1 (!kl_V1883) (!kl_V1884) (!kl_V1885) (!kl_V1886) = do !kl_if_0 <- kl_V1886 `pseq` (kl_V1883 `pseq` eq kl_V1886 kl_V1883)
                                                                                 case kl_if_0 of
                                                                                     Atom (B (True)) -> do return kl_V1885
                                                                                     Atom (B (False)) -> do do !appl_1 <- kl_V1883 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V1883
                                                                                                               !appl_2 <- kl_V1884 `pseq` (kl_V1883 `pseq` addressFrom kl_V1884 kl_V1883)
                                                                                                               !appl_3 <- kl_V1885 `pseq` (kl_V1883 `pseq` (appl_2 `pseq` addressTo kl_V1885 kl_V1883 appl_2))
                                                                                                               appl_1 `pseq` (kl_V1884 `pseq` (appl_3 `pseq` (kl_V1886 `pseq` kl_shen_copy_vector_stage_1 appl_1 kl_V1884 appl_3 kl_V1886)))
                                                                                     _ -> throwError "if: expected boolean"

kl_shen_copy_vector_stage_2 :: Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_copy_vector_stage_2 (!kl_V1894) (!kl_V1895) (!kl_V1896) (!kl_V1897) = do !kl_if_0 <- kl_V1895 `pseq` (kl_V1894 `pseq` eq kl_V1895 kl_V1894)
                                                                                 case kl_if_0 of
                                                                                     Atom (B (True)) -> do return kl_V1897
                                                                                     Atom (B (False)) -> do do !appl_1 <- kl_V1894 `pseq` add kl_V1894 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                                               !appl_2 <- kl_V1897 `pseq` (kl_V1894 `pseq` (kl_V1896 `pseq` addressTo kl_V1897 kl_V1894 kl_V1896))
                                                                                                               appl_1 `pseq` (kl_V1895 `pseq` (kl_V1896 `pseq` (appl_2 `pseq` kl_shen_copy_vector_stage_2 appl_1 kl_V1895 kl_V1896 appl_2)))
                                                                                     _ -> throwError "if: expected boolean"

kl_shen_mk_pvar :: Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_mk_pvar (!kl_V1899) = do !appl_0 <- absvector (Core.Types.Atom (Core.Types.N (Core.Types.KI 2)))
                                 !appl_1 <- appl_0 `pseq` addressTo appl_0 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) (ApplC (wrapNamed "shen.pvar" kl_shen_pvar))
                                 appl_1 `pseq` (kl_V1899 `pseq` addressTo appl_1 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) kl_V1899)

kl_shen_pvarP :: Core.Types.KLValue ->
                 Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_pvarP (!kl_V1901) = do !kl_if_0 <- kl_V1901 `pseq` absvectorP kl_V1901
                               case kl_if_0 of
                                   Atom (B (True)) -> do let !appl_1 = ApplC (PL "thunk" (do return (Core.Types.Atom (Core.Types.UnboundSym "shen.not-pvar"))))
                                                         !appl_2 <- kl_V1901 `pseq` (appl_1 `pseq` kl_LB_addressDivor kl_V1901 (Core.Types.Atom (Core.Types.N (Core.Types.KI 0))) appl_1)
                                                         !kl_if_3 <- appl_2 `pseq` eq appl_2 (ApplC (wrapNamed "shen.pvar" kl_shen_pvar))
                                                         case kl_if_3 of
                                                             Atom (B (True)) -> do return (Atom (B True))
                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                             _ -> throwError "if: expected boolean"
                                   Atom (B (False)) -> do do return (Atom (B False))
                                   _ -> throwError "if: expected boolean"

kl_shen_bindv :: Core.Types.KLValue ->
                 Core.Types.KLValue ->
                 Core.Types.KLValue ->
                 Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_bindv (!kl_V1905) (!kl_V1906) (!kl_V1907) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do !appl_1 <- kl_V1905 `pseq` addressFrom kl_V1905 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                                                        kl_Vector `pseq` (appl_1 `pseq` (kl_V1906 `pseq` addressTo kl_Vector appl_1 kl_V1906)))))
                                                       !appl_2 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                                       !appl_3 <- appl_2 `pseq` (kl_V1907 `pseq` addressFrom appl_2 kl_V1907)
                                                       appl_3 `pseq` applyWrapper appl_0 [appl_3]

kl_shen_unbindv :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_unbindv (!kl_V1910) (!kl_V1911) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do !appl_1 <- kl_V1910 `pseq` addressFrom kl_V1910 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                                                                                              kl_Vector `pseq` (appl_1 `pseq` addressTo kl_Vector appl_1 (Core.Types.Atom (Core.Types.UnboundSym "shen.-null-"))))))
                                             !appl_2 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                             !appl_3 <- appl_2 `pseq` (kl_V1911 `pseq` addressFrom appl_2 kl_V1911)
                                             appl_3 `pseq` applyWrapper appl_0 [appl_3]

kl_shen_incinfs :: Core.Types.KLContext Core.Types.Env
                                        Core.Types.KLValue
kl_shen_incinfs = do !appl_0 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*infs*"))
                     !appl_1 <- appl_0 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_0
                     appl_1 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*infs*")) appl_1

kl_shen_call_the_continuation :: Core.Types.KLValue ->
                                 Core.Types.KLValue ->
                                 Core.Types.KLValue ->
                                 Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_call_the_continuation (!kl_V1915) (!kl_V1916) (!kl_V1917) = do !kl_if_0 <- let pat_cond_1 kl_V1915 kl_V1915h kl_V1915t = do !kl_if_2 <- let pat_cond_3 kl_V1915h kl_V1915hh kl_V1915ht = do let !appl_4 = Atom Nil
                                                                                                                                                                                                    !kl_if_5 <- appl_4 `pseq` (kl_V1915t `pseq` eq appl_4 kl_V1915t)
                                                                                                                                                                                                    case kl_if_5 of
                                                                                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                                                    pat_cond_6 = do do return (Atom (B False))
                                                                                                                                                 in case kl_V1915h of
                                                                                                                                                        !(kl_V1915h@(Cons (!kl_V1915hh)
                                                                                                                                                                          (!kl_V1915ht))) -> pat_cond_3 kl_V1915h kl_V1915hh kl_V1915ht
                                                                                                                                                        _ -> pat_cond_6
                                                                                                                                    case kl_if_2 of
                                                                                                                                        Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                       pat_cond_7 = do do return (Atom (B False))
                                                                                    in case kl_V1915 of
                                                                                           !(kl_V1915@(Cons (!kl_V1915h)
                                                                                                            (!kl_V1915t))) -> pat_cond_1 kl_V1915 kl_V1915h kl_V1915t
                                                                                           _ -> pat_cond_7
                                                                       case kl_if_0 of
                                                                           Atom (B (True)) -> do !appl_8 <- kl_V1915 `pseq` hd kl_V1915
                                                                                                 !appl_9 <- appl_8 `pseq` hd appl_8
                                                                                                 !appl_10 <- kl_V1915 `pseq` hd kl_V1915
                                                                                                 !appl_11 <- appl_10 `pseq` tl appl_10
                                                                                                 let !appl_12 = Atom Nil
                                                                                                 !appl_13 <- kl_V1917 `pseq` (appl_12 `pseq` klCons kl_V1917 appl_12)
                                                                                                 !appl_14 <- kl_V1916 `pseq` (appl_13 `pseq` klCons kl_V1916 appl_13)
                                                                                                 !appl_15 <- appl_11 `pseq` (appl_14 `pseq` kl_append appl_11 appl_14)
                                                                                                 appl_9 `pseq` (appl_15 `pseq` klCons appl_9 appl_15)
                                                                           Atom (B (False)) -> do let pat_cond_16 kl_V1915 kl_V1915h kl_V1915hh kl_V1915ht kl_V1915t = do let !appl_17 = ApplC (Func "lambda" (Context (\(!kl_NewContinuation) -> do let !appl_18 = Atom Nil
                                                                                                                                                                                                                                                     !appl_19 <- kl_NewContinuation `pseq` (appl_18 `pseq` klCons kl_NewContinuation appl_18)
                                                                                                                                                                                                                                                     !appl_20 <- kl_V1916 `pseq` (appl_19 `pseq` klCons kl_V1916 appl_19)
                                                                                                                                                                                                                                                     !appl_21 <- kl_V1915ht `pseq` (appl_20 `pseq` kl_append kl_V1915ht appl_20)
                                                                                                                                                                                                                                                     kl_V1915hh `pseq` (appl_21 `pseq` klCons kl_V1915hh appl_21))))
                                                                                                                                                                          !appl_22 <- kl_V1915t `pseq` (kl_V1916 `pseq` (kl_V1917 `pseq` kl_shen_newcontinuation kl_V1915t kl_V1916 kl_V1917))
                                                                                                                                                                          appl_22 `pseq` applyWrapper appl_17 [appl_22]
                                                                                                      pat_cond_23 = do do let !aw_24 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                          applyWrapper aw_24 [ApplC (wrapNamed "shen.call_the_continuation" kl_shen_call_the_continuation)]
                                                                                                   in case kl_V1915 of
                                                                                                          !(kl_V1915@(Cons (!(kl_V1915h@(Cons (!kl_V1915hh)
                                                                                                                                              (!kl_V1915ht))))
                                                                                                                           (!kl_V1915t))) -> pat_cond_16 kl_V1915 kl_V1915h kl_V1915hh kl_V1915ht kl_V1915t
                                                                                                          _ -> pat_cond_23
                                                                           _ -> throwError "if: expected boolean"

kl_shen_newcontinuation :: Core.Types.KLValue ->
                           Core.Types.KLValue ->
                           Core.Types.KLValue ->
                           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_newcontinuation (!kl_V1921) (!kl_V1922) (!kl_V1923) = do let !appl_0 = Atom Nil
                                                                 !kl_if_1 <- appl_0 `pseq` (kl_V1921 `pseq` eq appl_0 kl_V1921)
                                                                 case kl_if_1 of
                                                                     Atom (B (True)) -> do return kl_V1923
                                                                     Atom (B (False)) -> do let pat_cond_2 kl_V1921 kl_V1921h kl_V1921hh kl_V1921ht kl_V1921t = do !appl_3 <- kl_V1921t `pseq` (kl_V1922 `pseq` (kl_V1923 `pseq` kl_shen_newcontinuation kl_V1921t kl_V1922 kl_V1923))
                                                                                                                                                                   let !appl_4 = Atom Nil
                                                                                                                                                                   !appl_5 <- appl_3 `pseq` (appl_4 `pseq` klCons appl_3 appl_4)
                                                                                                                                                                   !appl_6 <- kl_V1922 `pseq` (appl_5 `pseq` klCons kl_V1922 appl_5)
                                                                                                                                                                   !appl_7 <- kl_V1921ht `pseq` (appl_6 `pseq` kl_append kl_V1921ht appl_6)
                                                                                                                                                                   !appl_8 <- kl_V1921hh `pseq` (appl_7 `pseq` klCons kl_V1921hh appl_7)
                                                                                                                                                                   let !appl_9 = Atom Nil
                                                                                                                                                                   !appl_10 <- appl_8 `pseq` (appl_9 `pseq` klCons appl_8 appl_9)
                                                                                                                                                                   appl_10 `pseq` klCons (Core.Types.Atom (Core.Types.UnboundSym "freeze")) appl_10
                                                                                                pat_cond_11 = do do let !aw_12 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                    applyWrapper aw_12 [ApplC (wrapNamed "shen.newcontinuation" kl_shen_newcontinuation)]
                                                                                             in case kl_V1921 of
                                                                                                    !(kl_V1921@(Cons (!(kl_V1921h@(Cons (!kl_V1921hh)
                                                                                                                                        (!kl_V1921ht))))
                                                                                                                     (!kl_V1921t))) -> pat_cond_2 kl_V1921 kl_V1921h kl_V1921hh kl_V1921ht kl_V1921t
                                                                                                    _ -> pat_cond_11
                                                                     _ -> throwError "if: expected boolean"

kl_return :: Core.Types.KLValue ->
             Core.Types.KLValue ->
             Core.Types.KLValue ->
             Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_return (!kl_V1931) (!kl_V1932) (!kl_V1933) = do kl_V1931 `pseq` (kl_V1932 `pseq` kl_shen_deref kl_V1931 kl_V1932)

kl_shen_measureAndreturn :: Core.Types.KLValue ->
                            Core.Types.KLValue ->
                            Core.Types.KLValue ->
                            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_measureAndreturn (!kl_V1941) (!kl_V1942) (!kl_V1943) = do !appl_0 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*infs*"))
                                                                  let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                  !appl_2 <- appl_0 `pseq` applyWrapper aw_1 [appl_0,
                                                                                                              Core.Types.Atom (Core.Types.Str " inferences\n"),
                                                                                                              Core.Types.Atom (Core.Types.UnboundSym "shen.a")]
                                                                  !appl_3 <- kl_stoutput
                                                                  let !aw_4 = Core.Types.Atom (Core.Types.UnboundSym "shen.prhush")
                                                                  !appl_5 <- appl_2 `pseq` (appl_3 `pseq` applyWrapper aw_4 [appl_2,
                                                                                                                             appl_3])
                                                                  !appl_6 <- kl_V1941 `pseq` (kl_V1942 `pseq` kl_shen_deref kl_V1941 kl_V1942)
                                                                  appl_5 `pseq` (appl_6 `pseq` kl_do appl_5 appl_6)

kl_unify :: Core.Types.KLValue ->
            Core.Types.KLValue ->
            Core.Types.KLValue ->
            Core.Types.KLValue ->
            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_unify (!kl_V1948) (!kl_V1949) (!kl_V1950) (!kl_V1951) = do !appl_0 <- kl_V1948 `pseq` (kl_V1950 `pseq` kl_shen_lazyderef kl_V1948 kl_V1950)
                                                              !appl_1 <- kl_V1949 `pseq` (kl_V1950 `pseq` kl_shen_lazyderef kl_V1949 kl_V1950)
                                                              appl_0 `pseq` (appl_1 `pseq` (kl_V1950 `pseq` (kl_V1951 `pseq` kl_shen_lzyEq appl_0 appl_1 kl_V1950 kl_V1951)))

kl_shen_lzyEq :: Core.Types.KLValue ->
                 Core.Types.KLValue ->
                 Core.Types.KLValue ->
                 Core.Types.KLValue ->
                 Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_lzyEq (!kl_V1973) (!kl_V1974) (!kl_V1975) (!kl_V1976) = do !kl_if_0 <- kl_V1974 `pseq` (kl_V1973 `pseq` eq kl_V1974 kl_V1973)
                                                                   case kl_if_0 of
                                                                       Atom (B (True)) -> do kl_V1976 `pseq` kl_thaw kl_V1976
                                                                       Atom (B (False)) -> do !kl_if_1 <- kl_V1973 `pseq` kl_shen_pvarP kl_V1973
                                                                                              case kl_if_1 of
                                                                                                  Atom (B (True)) -> do kl_V1973 `pseq` (kl_V1974 `pseq` (kl_V1975 `pseq` (kl_V1976 `pseq` kl_bind kl_V1973 kl_V1974 kl_V1975 kl_V1976)))
                                                                                                  Atom (B (False)) -> do !kl_if_2 <- kl_V1974 `pseq` kl_shen_pvarP kl_V1974
                                                                                                                         case kl_if_2 of
                                                                                                                             Atom (B (True)) -> do kl_V1974 `pseq` (kl_V1973 `pseq` (kl_V1975 `pseq` (kl_V1976 `pseq` kl_bind kl_V1974 kl_V1973 kl_V1975 kl_V1976)))
                                                                                                                             Atom (B (False)) -> do !kl_if_3 <- let pat_cond_4 kl_V1973 kl_V1973h kl_V1973t = do let pat_cond_5 kl_V1974 kl_V1974h kl_V1974t = do return (Atom (B True))
                                                                                                                                                                                                                     pat_cond_6 = do do return (Atom (B False))
                                                                                                                                                                                                                  in case kl_V1974 of
                                                                                                                                                                                                                         !(kl_V1974@(Cons (!kl_V1974h)
                                                                                                                                                                                                                                          (!kl_V1974t))) -> pat_cond_5 kl_V1974 kl_V1974h kl_V1974t
                                                                                                                                                                                                                         _ -> pat_cond_6
                                                                                                                                                                    pat_cond_7 = do do return (Atom (B False))
                                                                                                                                                                 in case kl_V1973 of
                                                                                                                                                                        !(kl_V1973@(Cons (!kl_V1973h)
                                                                                                                                                                                         (!kl_V1973t))) -> pat_cond_4 kl_V1973 kl_V1973h kl_V1973t
                                                                                                                                                                        _ -> pat_cond_7
                                                                                                                                                    case kl_if_3 of
                                                                                                                                                        Atom (B (True)) -> do !appl_8 <- kl_V1973 `pseq` hd kl_V1973
                                                                                                                                                                              !appl_9 <- appl_8 `pseq` (kl_V1975 `pseq` kl_shen_lazyderef appl_8 kl_V1975)
                                                                                                                                                                              !appl_10 <- kl_V1974 `pseq` hd kl_V1974
                                                                                                                                                                              !appl_11 <- appl_10 `pseq` (kl_V1975 `pseq` kl_shen_lazyderef appl_10 kl_V1975)
                                                                                                                                                                              let !appl_12 = ApplC (PL "thunk" (do !appl_13 <- kl_V1973 `pseq` tl kl_V1973
                                                                                                                                                                                                                   !appl_14 <- appl_13 `pseq` (kl_V1975 `pseq` kl_shen_lazyderef appl_13 kl_V1975)
                                                                                                                                                                                                                   !appl_15 <- kl_V1974 `pseq` tl kl_V1974
                                                                                                                                                                                                                   !appl_16 <- appl_15 `pseq` (kl_V1975 `pseq` kl_shen_lazyderef appl_15 kl_V1975)
                                                                                                                                                                                                                   appl_14 `pseq` (appl_16 `pseq` (kl_V1975 `pseq` (kl_V1976 `pseq` kl_shen_lzyEq appl_14 appl_16 kl_V1975 kl_V1976)))))
                                                                                                                                                                              appl_9 `pseq` (appl_11 `pseq` (kl_V1975 `pseq` (appl_12 `pseq` kl_shen_lzyEq appl_9 appl_11 kl_V1975 appl_12)))
                                                                                                                                                        Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                        _ -> throwError "if: expected boolean"
                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                  _ -> throwError "if: expected boolean"
                                                                       _ -> throwError "if: expected boolean"

kl_shen_deref :: Core.Types.KLValue ->
                 Core.Types.KLValue ->
                 Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_deref (!kl_V1979) (!kl_V1980) = do let pat_cond_0 kl_V1979 kl_V1979h kl_V1979t = do !appl_1 <- kl_V1979h `pseq` (kl_V1980 `pseq` kl_shen_deref kl_V1979h kl_V1980)
                                                                                            !appl_2 <- kl_V1979t `pseq` (kl_V1980 `pseq` kl_shen_deref kl_V1979t kl_V1980)
                                                                                            appl_1 `pseq` (appl_2 `pseq` klCons appl_1 appl_2)
                                               pat_cond_3 = do do !kl_if_4 <- kl_V1979 `pseq` kl_shen_pvarP kl_V1979
                                                                  case kl_if_4 of
                                                                      Atom (B (True)) -> do let !appl_5 = ApplC (Func "lambda" (Context (\(!kl_Value) -> do let pat_cond_6 = do return kl_V1979
                                                                                                                                                                pat_cond_7 = do do kl_Value `pseq` (kl_V1980 `pseq` kl_shen_deref kl_Value kl_V1980)
                                                                                                                                                             in case kl_Value of
                                                                                                                                                                    kl_Value@(Atom (UnboundSym "shen.-null-")) -> pat_cond_6
                                                                                                                                                                    kl_Value@(ApplC (PL "shen.-null-"
                                                                                                                                                                                        _)) -> pat_cond_6
                                                                                                                                                                    kl_Value@(ApplC (Func "shen.-null-"
                                                                                                                                                                                          _)) -> pat_cond_6
                                                                                                                                                                    _ -> pat_cond_7)))
                                                                                            !appl_8 <- kl_V1979 `pseq` (kl_V1980 `pseq` kl_shen_valvector kl_V1979 kl_V1980)
                                                                                            appl_8 `pseq` applyWrapper appl_5 [appl_8]
                                                                      Atom (B (False)) -> do do return kl_V1979
                                                                      _ -> throwError "if: expected boolean"
                                            in case kl_V1979 of
                                                   !(kl_V1979@(Cons (!kl_V1979h)
                                                                    (!kl_V1979t))) -> pat_cond_0 kl_V1979 kl_V1979h kl_V1979t
                                                   _ -> pat_cond_3

kl_shen_lazyderef :: Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_lazyderef (!kl_V1983) (!kl_V1984) = do !kl_if_0 <- kl_V1983 `pseq` kl_shen_pvarP kl_V1983
                                               case kl_if_0 of
                                                   Atom (B (True)) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Value) -> do let pat_cond_2 = do return kl_V1983
                                                                                                                                             pat_cond_3 = do do kl_Value `pseq` (kl_V1984 `pseq` kl_shen_lazyderef kl_Value kl_V1984)
                                                                                                                                          in case kl_Value of
                                                                                                                                                 kl_Value@(Atom (UnboundSym "shen.-null-")) -> pat_cond_2
                                                                                                                                                 kl_Value@(ApplC (PL "shen.-null-"
                                                                                                                                                                     _)) -> pat_cond_2
                                                                                                                                                 kl_Value@(ApplC (Func "shen.-null-"
                                                                                                                                                                       _)) -> pat_cond_2
                                                                                                                                                 _ -> pat_cond_3)))
                                                                         !appl_4 <- kl_V1983 `pseq` (kl_V1984 `pseq` kl_shen_valvector kl_V1983 kl_V1984)
                                                                         appl_4 `pseq` applyWrapper appl_1 [appl_4]
                                                   Atom (B (False)) -> do do return kl_V1983
                                                   _ -> throwError "if: expected boolean"

kl_shen_valvector :: Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_valvector (!kl_V1987) (!kl_V1988) = do !appl_0 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                               !appl_1 <- appl_0 `pseq` (kl_V1988 `pseq` addressFrom appl_0 kl_V1988)
                                               !appl_2 <- kl_V1987 `pseq` addressFrom kl_V1987 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                                               appl_1 `pseq` (appl_2 `pseq` addressFrom appl_1 appl_2)

kl_unifyExcl :: Core.Types.KLValue ->
                Core.Types.KLValue ->
                Core.Types.KLValue ->
                Core.Types.KLValue ->
                Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_unifyExcl (!kl_V1993) (!kl_V1994) (!kl_V1995) (!kl_V1996) = do !appl_0 <- kl_V1993 `pseq` (kl_V1995 `pseq` kl_shen_lazyderef kl_V1993 kl_V1995)
                                                                  !appl_1 <- kl_V1994 `pseq` (kl_V1995 `pseq` kl_shen_lazyderef kl_V1994 kl_V1995)
                                                                  appl_0 `pseq` (appl_1 `pseq` (kl_V1995 `pseq` (kl_V1996 `pseq` kl_shen_lzyEqExcl appl_0 appl_1 kl_V1995 kl_V1996)))

kl_shen_lzyEqExcl :: Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_lzyEqExcl (!kl_V2018) (!kl_V2019) (!kl_V2020) (!kl_V2021) = do !kl_if_0 <- kl_V2019 `pseq` (kl_V2018 `pseq` eq kl_V2019 kl_V2018)
                                                                       case kl_if_0 of
                                                                           Atom (B (True)) -> do kl_V2021 `pseq` kl_thaw kl_V2021
                                                                           Atom (B (False)) -> do !kl_if_1 <- kl_V2018 `pseq` kl_shen_pvarP kl_V2018
                                                                                                  !kl_if_2 <- case kl_if_1 of
                                                                                                                  Atom (B (True)) -> do !appl_3 <- kl_V2019 `pseq` (kl_V2020 `pseq` kl_shen_deref kl_V2019 kl_V2020)
                                                                                                                                        !appl_4 <- kl_V2018 `pseq` (appl_3 `pseq` kl_shen_occursP kl_V2018 appl_3)
                                                                                                                                        !kl_if_5 <- appl_4 `pseq` kl_not appl_4
                                                                                                                                        case kl_if_5 of
                                                                                                                                            Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                  Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                  _ -> throwError "if: expected boolean"
                                                                                                  case kl_if_2 of
                                                                                                      Atom (B (True)) -> do kl_V2018 `pseq` (kl_V2019 `pseq` (kl_V2020 `pseq` (kl_V2021 `pseq` kl_bind kl_V2018 kl_V2019 kl_V2020 kl_V2021)))
                                                                                                      Atom (B (False)) -> do !kl_if_6 <- kl_V2019 `pseq` kl_shen_pvarP kl_V2019
                                                                                                                             !kl_if_7 <- case kl_if_6 of
                                                                                                                                             Atom (B (True)) -> do !appl_8 <- kl_V2018 `pseq` (kl_V2020 `pseq` kl_shen_deref kl_V2018 kl_V2020)
                                                                                                                                                                   !appl_9 <- kl_V2019 `pseq` (appl_8 `pseq` kl_shen_occursP kl_V2019 appl_8)
                                                                                                                                                                   !kl_if_10 <- appl_9 `pseq` kl_not appl_9
                                                                                                                                                                   case kl_if_10 of
                                                                                                                                                                       Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                       Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                       _ -> throwError "if: expected boolean"
                                                                                                                                             Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                             _ -> throwError "if: expected boolean"
                                                                                                                             case kl_if_7 of
                                                                                                                                 Atom (B (True)) -> do kl_V2019 `pseq` (kl_V2018 `pseq` (kl_V2020 `pseq` (kl_V2021 `pseq` kl_bind kl_V2019 kl_V2018 kl_V2020 kl_V2021)))
                                                                                                                                 Atom (B (False)) -> do !kl_if_11 <- let pat_cond_12 kl_V2018 kl_V2018h kl_V2018t = do let pat_cond_13 kl_V2019 kl_V2019h kl_V2019t = do return (Atom (B True))
                                                                                                                                                                                                                           pat_cond_14 = do do return (Atom (B False))
                                                                                                                                                                                                                        in case kl_V2019 of
                                                                                                                                                                                                                               !(kl_V2019@(Cons (!kl_V2019h)
                                                                                                                                                                                                                                                (!kl_V2019t))) -> pat_cond_13 kl_V2019 kl_V2019h kl_V2019t
                                                                                                                                                                                                                               _ -> pat_cond_14
                                                                                                                                                                         pat_cond_15 = do do return (Atom (B False))
                                                                                                                                                                      in case kl_V2018 of
                                                                                                                                                                             !(kl_V2018@(Cons (!kl_V2018h)
                                                                                                                                                                                              (!kl_V2018t))) -> pat_cond_12 kl_V2018 kl_V2018h kl_V2018t
                                                                                                                                                                             _ -> pat_cond_15
                                                                                                                                                        case kl_if_11 of
                                                                                                                                                            Atom (B (True)) -> do !appl_16 <- kl_V2018 `pseq` hd kl_V2018
                                                                                                                                                                                  !appl_17 <- appl_16 `pseq` (kl_V2020 `pseq` kl_shen_lazyderef appl_16 kl_V2020)
                                                                                                                                                                                  !appl_18 <- kl_V2019 `pseq` hd kl_V2019
                                                                                                                                                                                  !appl_19 <- appl_18 `pseq` (kl_V2020 `pseq` kl_shen_lazyderef appl_18 kl_V2020)
                                                                                                                                                                                  let !appl_20 = ApplC (PL "thunk" (do !appl_21 <- kl_V2018 `pseq` tl kl_V2018
                                                                                                                                                                                                                       !appl_22 <- appl_21 `pseq` (kl_V2020 `pseq` kl_shen_lazyderef appl_21 kl_V2020)
                                                                                                                                                                                                                       !appl_23 <- kl_V2019 `pseq` tl kl_V2019
                                                                                                                                                                                                                       !appl_24 <- appl_23 `pseq` (kl_V2020 `pseq` kl_shen_lazyderef appl_23 kl_V2020)
                                                                                                                                                                                                                       appl_22 `pseq` (appl_24 `pseq` (kl_V2020 `pseq` (kl_V2021 `pseq` kl_shen_lzyEqExcl appl_22 appl_24 kl_V2020 kl_V2021)))))
                                                                                                                                                                                  appl_17 `pseq` (appl_19 `pseq` (kl_V2020 `pseq` (appl_20 `pseq` kl_shen_lzyEqExcl appl_17 appl_19 kl_V2020 appl_20)))
                                                                                                                                                            Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                            _ -> throwError "if: expected boolean"
                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                      _ -> throwError "if: expected boolean"
                                                                           _ -> throwError "if: expected boolean"

kl_shen_occursP :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_occursP (!kl_V2033) (!kl_V2034) = do !kl_if_0 <- kl_V2034 `pseq` (kl_V2033 `pseq` eq kl_V2034 kl_V2033)
                                             case kl_if_0 of
                                                 Atom (B (True)) -> do return (Atom (B True))
                                                 Atom (B (False)) -> do let pat_cond_1 kl_V2034 kl_V2034h kl_V2034t = do !kl_if_2 <- kl_V2033 `pseq` (kl_V2034h `pseq` kl_shen_occursP kl_V2033 kl_V2034h)
                                                                                                                         case kl_if_2 of
                                                                                                                             Atom (B (True)) -> do return (Atom (B True))
                                                                                                                             Atom (B (False)) -> do do !kl_if_3 <- kl_V2033 `pseq` (kl_V2034t `pseq` kl_shen_occursP kl_V2033 kl_V2034t)
                                                                                                                                                       case kl_if_3 of
                                                                                                                                                           Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                           Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                           _ -> throwError "if: expected boolean"
                                                                                                                             _ -> throwError "if: expected boolean"
                                                                            pat_cond_4 = do do return (Atom (B False))
                                                                         in case kl_V2034 of
                                                                                !(kl_V2034@(Cons (!kl_V2034h)
                                                                                                 (!kl_V2034t))) -> pat_cond_1 kl_V2034 kl_V2034h kl_V2034t
                                                                                _ -> pat_cond_4
                                                 _ -> throwError "if: expected boolean"

kl_identical :: Core.Types.KLValue ->
                Core.Types.KLValue ->
                Core.Types.KLValue ->
                Core.Types.KLValue ->
                Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_identical (!kl_V2039) (!kl_V2040) (!kl_V2041) (!kl_V2042) = do !appl_0 <- kl_V2039 `pseq` (kl_V2041 `pseq` kl_shen_lazyderef kl_V2039 kl_V2041)
                                                                  !appl_1 <- kl_V2040 `pseq` (kl_V2041 `pseq` kl_shen_lazyderef kl_V2040 kl_V2041)
                                                                  appl_0 `pseq` (appl_1 `pseq` (kl_V2041 `pseq` (kl_V2042 `pseq` kl_shen_lzyEqEq appl_0 appl_1 kl_V2041 kl_V2042)))

kl_shen_lzyEqEq :: Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLValue ->
                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_lzyEqEq (!kl_V2064) (!kl_V2065) (!kl_V2066) (!kl_V2067) = do !kl_if_0 <- kl_V2065 `pseq` (kl_V2064 `pseq` eq kl_V2065 kl_V2064)
                                                                     case kl_if_0 of
                                                                         Atom (B (True)) -> do kl_V2067 `pseq` kl_thaw kl_V2067
                                                                         Atom (B (False)) -> do !kl_if_1 <- let pat_cond_2 kl_V2064 kl_V2064h kl_V2064t = do let pat_cond_3 kl_V2065 kl_V2065h kl_V2065t = do return (Atom (B True))
                                                                                                                                                                 pat_cond_4 = do do return (Atom (B False))
                                                                                                                                                              in case kl_V2065 of
                                                                                                                                                                     !(kl_V2065@(Cons (!kl_V2065h)
                                                                                                                                                                                      (!kl_V2065t))) -> pat_cond_3 kl_V2065 kl_V2065h kl_V2065t
                                                                                                                                                                     _ -> pat_cond_4
                                                                                                                pat_cond_5 = do do return (Atom (B False))
                                                                                                             in case kl_V2064 of
                                                                                                                    !(kl_V2064@(Cons (!kl_V2064h)
                                                                                                                                     (!kl_V2064t))) -> pat_cond_2 kl_V2064 kl_V2064h kl_V2064t
                                                                                                                    _ -> pat_cond_5
                                                                                                case kl_if_1 of
                                                                                                    Atom (B (True)) -> do !appl_6 <- kl_V2064 `pseq` hd kl_V2064
                                                                                                                          !appl_7 <- appl_6 `pseq` (kl_V2066 `pseq` kl_shen_lazyderef appl_6 kl_V2066)
                                                                                                                          !appl_8 <- kl_V2065 `pseq` hd kl_V2065
                                                                                                                          !appl_9 <- appl_8 `pseq` (kl_V2066 `pseq` kl_shen_lazyderef appl_8 kl_V2066)
                                                                                                                          let !appl_10 = ApplC (PL "thunk" (do !appl_11 <- kl_V2064 `pseq` tl kl_V2064
                                                                                                                                                               !appl_12 <- kl_V2065 `pseq` tl kl_V2065
                                                                                                                                                               appl_11 `pseq` (appl_12 `pseq` (kl_V2066 `pseq` (kl_V2067 `pseq` kl_shen_lzyEqEq appl_11 appl_12 kl_V2066 kl_V2067)))))
                                                                                                                          appl_7 `pseq` (appl_9 `pseq` (kl_V2066 `pseq` (appl_10 `pseq` kl_shen_lzyEqEq appl_7 appl_9 kl_V2066 appl_10)))
                                                                                                    Atom (B (False)) -> do do return (Atom (B False))
                                                                                                    _ -> throwError "if: expected boolean"
                                                                         _ -> throwError "if: expected boolean"

kl_shen_pvar :: Core.Types.KLValue ->
                Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_pvar (!kl_V2069) = do !appl_0 <- kl_V2069 `pseq` addressFrom kl_V2069 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1)))
                              let !aw_1 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                              !appl_2 <- appl_0 `pseq` applyWrapper aw_1 [appl_0,
                                                                          Core.Types.Atom (Core.Types.Str ""),
                                                                          Core.Types.Atom (Core.Types.UnboundSym "shen.a")]
                              appl_2 `pseq` cn (Core.Types.Atom (Core.Types.Str "Var")) appl_2

kl_bind :: Core.Types.KLValue ->
           Core.Types.KLValue ->
           Core.Types.KLValue ->
           Core.Types.KLValue ->
           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_bind (!kl_V2074) (!kl_V2075) (!kl_V2076) (!kl_V2077) = do !appl_0 <- kl_V2074 `pseq` (kl_V2075 `pseq` (kl_V2076 `pseq` kl_shen_bindv kl_V2074 kl_V2075 kl_V2076))
                                                             let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Result) -> do !appl_2 <- kl_V2074 `pseq` (kl_V2076 `pseq` kl_shen_unbindv kl_V2074 kl_V2076)
                                                                                                                              appl_2 `pseq` (kl_Result `pseq` kl_do appl_2 kl_Result))))
                                                             !appl_3 <- kl_V2077 `pseq` kl_thaw kl_V2077
                                                             !appl_4 <- appl_3 `pseq` applyWrapper appl_1 [appl_3]
                                                             appl_0 `pseq` (appl_4 `pseq` kl_do appl_0 appl_4)

kl_fwhen :: Core.Types.KLValue ->
            Core.Types.KLValue ->
            Core.Types.KLValue ->
            Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_fwhen (!kl_V2095) (!kl_V2096) (!kl_V2097) = do let pat_cond_0 = do kl_V2097 `pseq` kl_thaw kl_V2097
                                                      pat_cond_1 = do return (Atom (B False))
                                                      pat_cond_2 = do do let !aw_3 = Core.Types.Atom (Core.Types.UnboundSym "shen.app")
                                                                         !appl_4 <- kl_V2095 `pseq` applyWrapper aw_3 [kl_V2095,
                                                                                                                       Core.Types.Atom (Core.Types.Str "%"),
                                                                                                                       Core.Types.Atom (Core.Types.UnboundSym "shen.s")]
                                                                         !appl_5 <- appl_4 `pseq` cn (Core.Types.Atom (Core.Types.Str "fwhen expects a boolean: not ")) appl_4
                                                                         appl_5 `pseq` simpleError appl_5
                                                   in case kl_V2095 of
                                                          kl_V2095@(Atom (UnboundSym "true")) -> pat_cond_0
                                                          kl_V2095@(Atom (B (True))) -> pat_cond_0
                                                          kl_V2095@(Atom (UnboundSym "false")) -> pat_cond_1
                                                          kl_V2095@(Atom (B (False))) -> pat_cond_1
                                                          _ -> pat_cond_2

kl_call :: Core.Types.KLValue ->
           Core.Types.KLValue ->
           Core.Types.KLValue ->
           Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_call (!kl_V2113) (!kl_V2114) (!kl_V2115) = do let pat_cond_0 kl_V2113 kl_V2113h kl_V2113t = do !appl_1 <- kl_V2113h `pseq` (kl_V2114 `pseq` kl_shen_lazyderef kl_V2113h kl_V2114)
                                                                                                  !appl_2 <- appl_1 `pseq` kl_function appl_1
                                                                                                  appl_2 `pseq` (kl_V2113t `pseq` (kl_V2114 `pseq` (kl_V2115 `pseq` kl_shen_call_help appl_2 kl_V2113t kl_V2114 kl_V2115)))
                                                     pat_cond_3 = do do return (Atom (B False))
                                                  in case kl_V2113 of
                                                         !(kl_V2113@(Cons (!kl_V2113h)
                                                                          (!kl_V2113t))) -> pat_cond_0 kl_V2113 kl_V2113h kl_V2113t
                                                         _ -> pat_cond_3

kl_shen_call_help :: Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_call_help (!kl_V2120) (!kl_V2121) (!kl_V2122) (!kl_V2123) = do let !appl_0 = Atom Nil
                                                                       !kl_if_1 <- appl_0 `pseq` (kl_V2121 `pseq` eq appl_0 kl_V2121)
                                                                       case kl_if_1 of
                                                                           Atom (B (True)) -> do kl_V2122 `pseq` (kl_V2123 `pseq` applyWrapper kl_V2120 [kl_V2122,
                                                                                                                                                         kl_V2123])
                                                                           Atom (B (False)) -> do let pat_cond_2 kl_V2121 kl_V2121h kl_V2121t = do !appl_3 <- kl_V2121h `pseq` applyWrapper kl_V2120 [kl_V2121h]
                                                                                                                                                   appl_3 `pseq` (kl_V2121t `pseq` (kl_V2122 `pseq` (kl_V2123 `pseq` kl_shen_call_help appl_3 kl_V2121t kl_V2122 kl_V2123)))
                                                                                                      pat_cond_4 = do do let !aw_5 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                         applyWrapper aw_5 [ApplC (wrapNamed "shen.call-help" kl_shen_call_help)]
                                                                                                   in case kl_V2121 of
                                                                                                          !(kl_V2121@(Cons (!kl_V2121h)
                                                                                                                           (!kl_V2121t))) -> pat_cond_2 kl_V2121 kl_V2121h kl_V2121t
                                                                                                          _ -> pat_cond_4
                                                                           _ -> throwError "if: expected boolean"

kl_shen_intprolog :: Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_intprolog (!kl_V2125) = do let pat_cond_0 kl_V2125 kl_V2125h kl_V2125hh kl_V2125ht kl_V2125t = do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_ProcessN) -> do let !appl_2 = Atom Nil
                                                                                                                                                                             !appl_3 <- kl_V2125t `pseq` (appl_2 `pseq` klCons kl_V2125t appl_2)
                                                                                                                                                                             !appl_4 <- kl_V2125ht `pseq` (appl_3 `pseq` klCons kl_V2125ht appl_3)
                                                                                                                                                                             !appl_5 <- appl_4 `pseq` (kl_ProcessN `pseq` kl_shen_insert_prolog_variables appl_4 kl_ProcessN)
                                                                                                                                                                             kl_V2125hh `pseq` (appl_5 `pseq` (kl_ProcessN `pseq` kl_shen_intprolog_help kl_V2125hh appl_5 kl_ProcessN)))))
                                                                                                          !appl_6 <- kl_shen_start_new_prolog_process
                                                                                                          appl_6 `pseq` applyWrapper appl_1 [appl_6]
                                       pat_cond_7 = do do let !aw_8 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                          applyWrapper aw_8 [ApplC (wrapNamed "shen.intprolog" kl_shen_intprolog)]
                                    in case kl_V2125 of
                                           !(kl_V2125@(Cons (!(kl_V2125h@(Cons (!kl_V2125hh)
                                                                               (!kl_V2125ht))))
                                                            (!kl_V2125t))) -> pat_cond_0 kl_V2125 kl_V2125h kl_V2125hh kl_V2125ht kl_V2125t
                                           _ -> pat_cond_7

kl_shen_intprolog_help :: Core.Types.KLValue ->
                          Core.Types.KLValue ->
                          Core.Types.KLValue ->
                          Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_intprolog_help (!kl_V2129) (!kl_V2130) (!kl_V2131) = do !kl_if_0 <- let pat_cond_1 kl_V2130 kl_V2130h kl_V2130t = do !kl_if_2 <- let pat_cond_3 kl_V2130t kl_V2130th kl_V2130tt = do let !appl_4 = Atom Nil
                                                                                                                                                                                             !kl_if_5 <- appl_4 `pseq` (kl_V2130tt `pseq` eq appl_4 kl_V2130tt)
                                                                                                                                                                                             case kl_if_5 of
                                                                                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                                                                             pat_cond_6 = do do return (Atom (B False))
                                                                                                                                          in case kl_V2130t of
                                                                                                                                                 !(kl_V2130t@(Cons (!kl_V2130th)
                                                                                                                                                                   (!kl_V2130tt))) -> pat_cond_3 kl_V2130t kl_V2130th kl_V2130tt
                                                                                                                                                 _ -> pat_cond_6
                                                                                                                             case kl_if_2 of
                                                                                                                                 Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                 Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                 _ -> throwError "if: expected boolean"
                                                                                pat_cond_7 = do do return (Atom (B False))
                                                                             in case kl_V2130 of
                                                                                    !(kl_V2130@(Cons (!kl_V2130h)
                                                                                                     (!kl_V2130t))) -> pat_cond_1 kl_V2130 kl_V2130h kl_V2130t
                                                                                    _ -> pat_cond_7
                                                                case kl_if_0 of
                                                                    Atom (B (True)) -> do !appl_8 <- kl_V2130 `pseq` hd kl_V2130
                                                                                          !appl_9 <- kl_V2130 `pseq` tl kl_V2130
                                                                                          !appl_10 <- appl_9 `pseq` hd appl_9
                                                                                          kl_V2129 `pseq` (appl_8 `pseq` (appl_10 `pseq` (kl_V2131 `pseq` kl_shen_intprolog_help_help kl_V2129 appl_8 appl_10 kl_V2131)))
                                                                    Atom (B (False)) -> do do let !aw_11 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                              applyWrapper aw_11 [ApplC (wrapNamed "shen.intprolog-help" kl_shen_intprolog_help)]
                                                                    _ -> throwError "if: expected boolean"

kl_shen_intprolog_help_help :: Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLValue ->
                               Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_intprolog_help_help (!kl_V2136) (!kl_V2137) (!kl_V2138) (!kl_V2139) = do let !appl_0 = Atom Nil
                                                                                 !kl_if_1 <- appl_0 `pseq` (kl_V2137 `pseq` eq appl_0 kl_V2137)
                                                                                 case kl_if_1 of
                                                                                     Atom (B (True)) -> do let !appl_2 = ApplC (PL "thunk" (do kl_V2138 `pseq` (kl_V2139 `pseq` kl_shen_call_rest kl_V2138 kl_V2139)))
                                                                                                           kl_V2139 `pseq` (appl_2 `pseq` applyWrapper kl_V2136 [kl_V2139,
                                                                                                                                                                 appl_2])
                                                                                     Atom (B (False)) -> do let pat_cond_3 kl_V2137 kl_V2137h kl_V2137t = do !appl_4 <- kl_V2137h `pseq` applyWrapper kl_V2136 [kl_V2137h]
                                                                                                                                                             appl_4 `pseq` (kl_V2137t `pseq` (kl_V2138 `pseq` (kl_V2139 `pseq` kl_shen_intprolog_help_help appl_4 kl_V2137t kl_V2138 kl_V2139)))
                                                                                                                pat_cond_5 = do do let !aw_6 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                                   applyWrapper aw_6 [ApplC (wrapNamed "shen.intprolog-help-help" kl_shen_intprolog_help_help)]
                                                                                                             in case kl_V2137 of
                                                                                                                    !(kl_V2137@(Cons (!kl_V2137h)
                                                                                                                                     (!kl_V2137t))) -> pat_cond_3 kl_V2137 kl_V2137h kl_V2137t
                                                                                                                    _ -> pat_cond_5
                                                                                     _ -> throwError "if: expected boolean"

kl_shen_call_rest :: Core.Types.KLValue ->
                     Core.Types.KLValue ->
                     Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_call_rest (!kl_V2144) (!kl_V2145) = do let !appl_0 = Atom Nil
                                               !kl_if_1 <- appl_0 `pseq` (kl_V2144 `pseq` eq appl_0 kl_V2144)
                                               case kl_if_1 of
                                                   Atom (B (True)) -> do return (Atom (B True))
                                                   Atom (B (False)) -> do let pat_cond_2 kl_V2144 kl_V2144h kl_V2144hh kl_V2144ht kl_V2144hth kl_V2144htt kl_V2144t = do !appl_3 <- kl_V2144hth `pseq` applyWrapper kl_V2144hh [kl_V2144hth]
                                                                                                                                                                         !appl_4 <- appl_3 `pseq` (kl_V2144htt `pseq` klCons appl_3 kl_V2144htt)
                                                                                                                                                                         !appl_5 <- appl_4 `pseq` (kl_V2144t `pseq` klCons appl_4 kl_V2144t)
                                                                                                                                                                         appl_5 `pseq` (kl_V2145 `pseq` kl_shen_call_rest appl_5 kl_V2145)
                                                                              pat_cond_6 = do !kl_if_7 <- let pat_cond_8 kl_V2144 kl_V2144h kl_V2144t = do !kl_if_9 <- let pat_cond_10 kl_V2144h kl_V2144hh kl_V2144ht = do let !appl_11 = Atom Nil
                                                                                                                                                                                                                            !kl_if_12 <- appl_11 `pseq` (kl_V2144ht `pseq` eq appl_11 kl_V2144ht)
                                                                                                                                                                                                                            case kl_if_12 of
                                                                                                                                                                                                                                Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                                                                                Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                                                                                _ -> throwError "if: expected boolean"
                                                                                                                                                                           pat_cond_13 = do do return (Atom (B False))
                                                                                                                                                                        in case kl_V2144h of
                                                                                                                                                                               !(kl_V2144h@(Cons (!kl_V2144hh)
                                                                                                                                                                                                 (!kl_V2144ht))) -> pat_cond_10 kl_V2144h kl_V2144hh kl_V2144ht
                                                                                                                                                                               _ -> pat_cond_13
                                                                                                                                                           case kl_if_9 of
                                                                                                                                                               Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                               Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                               _ -> throwError "if: expected boolean"
                                                                                                              pat_cond_14 = do do return (Atom (B False))
                                                                                                           in case kl_V2144 of
                                                                                                                  !(kl_V2144@(Cons (!kl_V2144h)
                                                                                                                                   (!kl_V2144t))) -> pat_cond_8 kl_V2144 kl_V2144h kl_V2144t
                                                                                                                  _ -> pat_cond_14
                                                                                              case kl_if_7 of
                                                                                                  Atom (B (True)) -> do !appl_15 <- kl_V2144 `pseq` hd kl_V2144
                                                                                                                        !appl_16 <- appl_15 `pseq` hd appl_15
                                                                                                                        let !appl_17 = ApplC (PL "thunk" (do !appl_18 <- kl_V2144 `pseq` tl kl_V2144
                                                                                                                                                             appl_18 `pseq` (kl_V2145 `pseq` kl_shen_call_rest appl_18 kl_V2145)))
                                                                                                                        kl_V2145 `pseq` (appl_17 `pseq` applyWrapper appl_16 [kl_V2145,
                                                                                                                                                                              appl_17])
                                                                                                  Atom (B (False)) -> do do let !aw_19 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                            applyWrapper aw_19 [ApplC (wrapNamed "shen.call-rest" kl_shen_call_rest)]
                                                                                                  _ -> throwError "if: expected boolean"
                                                                           in case kl_V2144 of
                                                                                  !(kl_V2144@(Cons (!(kl_V2144h@(Cons (!kl_V2144hh)
                                                                                                                      (!(kl_V2144ht@(Cons (!kl_V2144hth)
                                                                                                                                          (!kl_V2144htt)))))))
                                                                                                   (!kl_V2144t))) -> pat_cond_2 kl_V2144 kl_V2144h kl_V2144hh kl_V2144ht kl_V2144hth kl_V2144htt kl_V2144t
                                                                                  _ -> pat_cond_6
                                                   _ -> throwError "if: expected boolean"

kl_shen_start_new_prolog_process :: Core.Types.KLContext Core.Types.Env
                                                         Core.Types.KLValue
kl_shen_start_new_prolog_process = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_IncrementProcessCounter) -> do kl_IncrementProcessCounter `pseq` kl_shen_initialise_prolog kl_IncrementProcessCounter)))
                                      !appl_1 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*process-counter*"))
                                      !appl_2 <- appl_1 `pseq` add (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) appl_1
                                      !appl_3 <- appl_2 `pseq` klSet (Core.Types.Atom (Core.Types.UnboundSym "shen.*process-counter*")) appl_2
                                      appl_3 `pseq` applyWrapper appl_0 [appl_3]

kl_shen_insert_prolog_variables :: Core.Types.KLValue ->
                                   Core.Types.KLValue ->
                                   Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_insert_prolog_variables (!kl_V2148) (!kl_V2149) = do !appl_0 <- kl_V2148 `pseq` kl_shen_flatten kl_V2148
                                                             kl_V2148 `pseq` (appl_0 `pseq` (kl_V2149 `pseq` kl_shen_insert_prolog_variables_help kl_V2148 appl_0 kl_V2149))

kl_shen_insert_prolog_variables_help :: Core.Types.KLValue ->
                                        Core.Types.KLValue ->
                                        Core.Types.KLValue ->
                                        Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_insert_prolog_variables_help (!kl_V2157) (!kl_V2158) (!kl_V2159) = do let !appl_0 = Atom Nil
                                                                              !kl_if_1 <- appl_0 `pseq` (kl_V2158 `pseq` eq appl_0 kl_V2158)
                                                                              case kl_if_1 of
                                                                                  Atom (B (True)) -> do return kl_V2157
                                                                                  Atom (B (False)) -> do !kl_if_2 <- let pat_cond_3 kl_V2158 kl_V2158h kl_V2158t = do !kl_if_4 <- kl_V2158h `pseq` kl_variableP kl_V2158h
                                                                                                                                                                      case kl_if_4 of
                                                                                                                                                                          Atom (B (True)) -> do return (Atom (B True))
                                                                                                                                                                          Atom (B (False)) -> do do return (Atom (B False))
                                                                                                                                                                          _ -> throwError "if: expected boolean"
                                                                                                                         pat_cond_5 = do do return (Atom (B False))
                                                                                                                      in case kl_V2158 of
                                                                                                                             !(kl_V2158@(Cons (!kl_V2158h)
                                                                                                                                              (!kl_V2158t))) -> pat_cond_3 kl_V2158 kl_V2158h kl_V2158t
                                                                                                                             _ -> pat_cond_5
                                                                                                         case kl_if_2 of
                                                                                                             Atom (B (True)) -> do let !appl_6 = ApplC (Func "lambda" (Context (\(!kl_V) -> do let !appl_7 = ApplC (Func "lambda" (Context (\(!kl_XVDivY) -> do let !appl_8 = ApplC (Func "lambda" (Context (\(!kl_Z_Y) -> do kl_XVDivY `pseq` (kl_Z_Y `pseq` (kl_V2159 `pseq` kl_shen_insert_prolog_variables_help kl_XVDivY kl_Z_Y kl_V2159)))))
                                                                                                                                                                                                                                                                !appl_9 <- kl_V2158 `pseq` hd kl_V2158
                                                                                                                                                                                                                                                                !appl_10 <- kl_V2158 `pseq` tl kl_V2158
                                                                                                                                                                                                                                                                !appl_11 <- appl_9 `pseq` (appl_10 `pseq` kl_remove appl_9 appl_10)
                                                                                                                                                                                                                                                                appl_11 `pseq` applyWrapper appl_8 [appl_11])))
                                                                                                                                                                                               !appl_12 <- kl_V2158 `pseq` hd kl_V2158
                                                                                                                                                                                               !appl_13 <- kl_V `pseq` (appl_12 `pseq` (kl_V2157 `pseq` kl_subst kl_V appl_12 kl_V2157))
                                                                                                                                                                                               appl_13 `pseq` applyWrapper appl_7 [appl_13])))
                                                                                                                                   !appl_14 <- kl_V2159 `pseq` kl_shen_newpv kl_V2159
                                                                                                                                   appl_14 `pseq` applyWrapper appl_6 [appl_14]
                                                                                                             Atom (B (False)) -> do let pat_cond_15 kl_V2158 kl_V2158h kl_V2158t = do kl_V2157 `pseq` (kl_V2158t `pseq` (kl_V2159 `pseq` kl_shen_insert_prolog_variables_help kl_V2157 kl_V2158t kl_V2159))
                                                                                                                                        pat_cond_16 = do do let !aw_17 = Core.Types.Atom (Core.Types.UnboundSym "shen.f_error")
                                                                                                                                                            applyWrapper aw_17 [ApplC (wrapNamed "shen.insert-prolog-variables-help" kl_shen_insert_prolog_variables_help)]
                                                                                                                                     in case kl_V2158 of
                                                                                                                                            !(kl_V2158@(Cons (!kl_V2158h)
                                                                                                                                                             (!kl_V2158t))) -> pat_cond_15 kl_V2158 kl_V2158h kl_V2158t
                                                                                                                                            _ -> pat_cond_16
                                                                                                             _ -> throwError "if: expected boolean"
                                                                                  _ -> throwError "if: expected boolean"

kl_shen_initialise_prolog :: Core.Types.KLValue ->
                             Core.Types.KLContext Core.Types.Env Core.Types.KLValue
kl_shen_initialise_prolog (!kl_V2161) = do let !appl_0 = ApplC (Func "lambda" (Context (\(!kl_Vector) -> do let !appl_1 = ApplC (Func "lambda" (Context (\(!kl_Counter) -> do return kl_V2161)))
                                                                                                            !appl_2 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*varcounter*"))
                                                                                                            !appl_3 <- appl_2 `pseq` (kl_V2161 `pseq` addressTo appl_2 kl_V2161 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))))
                                                                                                            appl_3 `pseq` applyWrapper appl_1 [appl_3])))
                                           !appl_4 <- value (Core.Types.Atom (Core.Types.UnboundSym "shen.*prologvectors*"))
                                           !appl_5 <- kl_vector (Core.Types.Atom (Core.Types.N (Core.Types.KI 10)))
                                           !appl_6 <- appl_5 `pseq` kl_shen_fillvector appl_5 (Core.Types.Atom (Core.Types.N (Core.Types.KI 1))) (Core.Types.Atom (Core.Types.N (Core.Types.KI 10))) (Core.Types.Atom (Core.Types.UnboundSym "shen.-null-"))
                                           !appl_7 <- appl_4 `pseq` (kl_V2161 `pseq` (appl_6 `pseq` addressTo appl_4 kl_V2161 appl_6))
                                           appl_7 `pseq` applyWrapper appl_0 [appl_7]

expr6 :: Core.Types.KLContext Core.Types.Env Core.Types.KLValue
expr6 = do (do return (Core.Types.Atom (Core.Types.Str "Copyright (c) 2015, Mark Tarver\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n3. The name of Mark Tarver may not be used to endorse or promote products\n   derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY Mark Tarver ''AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL Mark Tarver BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."))) `catchError` (\(!kl_E) -> do return (Core.Types.Atom (Core.Types.Str "E")))