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")))