shen-ruby 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,101 +23,101 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
23
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
24
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
25
25
 
26
- (defun shen.typecheck (V2077 V2078) (let Curry (shen.curry V2077) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2078)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
26
+ (defun shen.typecheck (V18120 V18121) (let Curry (shen.curry V18120) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V18121)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
27
27
 
28
- (defun shen.curry (V2079) (cond ((and (cons? V2079) (shen.special? (hd V2079))) (cons (hd V2079) (map (lambda V1754 (shen.curry V1754)) (tl V2079)))) ((and (cons? V2079) (and (cons? (tl V2079)) (shen.extraspecial? (hd V2079)))) V2079) ((and (cons? V2079) (and (= type (hd V2079)) (and (cons? (tl V2079)) (and (cons? (tl (tl V2079))) (= () (tl (tl (tl V2079)))))))) (cons type (cons (shen.curry (hd (tl V2079))) (tl (tl V2079))))) ((and (cons? V2079) (and (cons? (tl V2079)) (cons? (tl (tl V2079))))) (shen.curry (cons (cons (hd V2079) (cons (hd (tl V2079)) ())) (tl (tl V2079))))) ((and (cons? V2079) (and (cons? (tl V2079)) (= () (tl (tl V2079))))) (cons (shen.curry (hd V2079)) (cons (shen.curry (hd (tl V2079))) ()))) (true V2079)))
28
+ (defun shen.curry (V18123) (cond ((and (cons? V18123) (shen.special? (hd V18123))) (cons (hd V18123) (map (lambda Y (shen.curry Y)) (tl V18123)))) ((and (cons? V18123) (and (cons? (tl V18123)) (shen.extraspecial? (hd V18123)))) V18123) ((and (cons? V18123) (and (= type (hd V18123)) (and (cons? (tl V18123)) (and (cons? (tl (tl V18123))) (= () (tl (tl (tl V18123)))))))) (cons type (cons (shen.curry (hd (tl V18123))) (tl (tl V18123))))) ((and (cons? V18123) (and (cons? (tl V18123)) (cons? (tl (tl V18123))))) (shen.curry (cons (cons (hd V18123) (cons (hd (tl V18123)) ())) (tl (tl V18123))))) ((and (cons? V18123) (and (cons? (tl V18123)) (= () (tl (tl V18123))))) (cons (shen.curry (hd V18123)) (cons (shen.curry (hd (tl V18123))) ()))) (true V18123)))
29
29
 
30
- (defun shen.special? (V2080) (element? V2080 (value shen.*special*)))
30
+ (defun shen.special? (V18125) (element? V18125 (value shen.*special*)))
31
31
 
32
- (defun shen.extraspecial? (V2081) (element? V2081 (value shen.*extraspecial*)))
32
+ (defun shen.extraspecial? (V18127) (element? V18127 (value shen.*extraspecial*)))
33
33
 
34
- (defun shen.t* (V2082 V2083 V2084 V2085) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2084) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2084 (freeze (bind Error (shen.errormaxinfs) V2084 V2085))))) (if (= Case false) (let Case (let V2071 (shen.lazyderef V2082 V2084) (if (= fail V2071) (do (shen.incinfs) (cut Throwcontrol V2084 (freeze (shen.prolog-failure V2084 V2085)))) false)) (if (= Case false) (let Case (let V2072 (shen.lazyderef V2082 V2084) (if (cons? V2072) (let X (hd V2072) (let V2073 (shen.lazyderef (tl V2072) V2084) (if (cons? V2073) (let V2074 (shen.lazyderef (hd V2073) V2084) (if (= : V2074) (let V2075 (shen.lazyderef (tl V2073) V2084) (if (cons? V2075) (let A (hd V2075) (let V2076 (shen.lazyderef (tl V2075) V2084) (if (= () V2076) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2084 (freeze (cut Throwcontrol V2084 (freeze (shen.th* X A V2083 V2084 V2085)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2084) (do (shen.incinfs) (shen.show V2082 V2083 V2084 (freeze (bind Datatypes (value shen.*datatypes*) V2084 (freeze (shen.udefs* V2082 V2083 Datatypes V2084 V2085))))))) Case)) Case)) Case)))))
34
+ (defun shen.t* (V18132 V18133 V18134 V18135) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V18134) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V18134 (freeze (bind Error (shen.errormaxinfs) V18134 V18135))))) (if (= Case false) (let Case (let V18112 (shen.lazyderef V18132 V18134) (if (= fail V18112) (do (shen.incinfs) (cut Throwcontrol V18134 (freeze (shen.prolog-failure V18134 V18135)))) false)) (if (= Case false) (let Case (let V18113 (shen.lazyderef V18132 V18134) (if (cons? V18113) (let X (hd V18113) (let V18114 (shen.lazyderef (tl V18113) V18134) (if (cons? V18114) (let V18115 (shen.lazyderef (hd V18114) V18134) (if (= : V18115) (let V18116 (shen.lazyderef (tl V18114) V18134) (if (cons? V18116) (let A (hd V18116) (let V18117 (shen.lazyderef (tl V18116) V18134) (if (= () V18117) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V18134 (freeze (cut Throwcontrol V18134 (freeze (shen.th* X A V18133 V18134 V18135)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V18134) (do (shen.incinfs) (shen.show V18132 V18133 V18134 (freeze (bind Datatypes (value shen.*datatypes*) V18134 (freeze (shen.udefs* V18132 V18133 Datatypes V18134 V18135))))))) Case)) Case)) Case)))))
35
35
 
36
36
  (defun shen.type-theory-enabled? () (value shen.*shen-type-theory-enabled?*))
37
37
 
38
- (defun enable-type-theory (V2090) (cond ((= + V2090) (set shen.*shen-type-theory-enabled?* true)) ((= - V2090) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
38
+ (defun enable-type-theory (V18141) (cond ((= + V18141) (set shen.*shen-type-theory-enabled?* true)) ((= - V18141) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
39
39
  "))))
40
40
 
41
- (defun shen.prolog-failure (V2099 V2100) false)
41
+ (defun shen.prolog-failure (V18152 V18153) false)
42
42
 
43
43
  (defun shen.maxinfexceeded? () (> (inferences) (value shen.*maxinferences*)))
44
44
 
45
45
  (defun shen.errormaxinfs () (simple-error "maximum inferences exceeded~%"))
46
46
 
47
- (defun shen.udefs* (V2101 V2102 V2103 V2104 V2105) (let Case (let V2067 (shen.lazyderef V2103 V2104) (if (cons? V2067) (let D (hd V2067) (do (shen.incinfs) (call (cons D (cons V2101 (cons V2102 ()))) V2104 V2105))) false)) (if (= Case false) (let V2068 (shen.lazyderef V2103 V2104) (if (cons? V2068) (let Ds (tl V2068) (do (shen.incinfs) (shen.udefs* V2101 V2102 Ds V2104 V2105))) false)) Case)))
47
+ (defun shen.udefs* (V18159 V18160 V18161 V18162 V18163) (let Case (let V18108 (shen.lazyderef V18161 V18162) (if (cons? V18108) (let D (hd V18108) (do (shen.incinfs) (call (cons D (cons V18159 (cons V18160 ()))) V18162 V18163))) false)) (if (= Case false) (let V18109 (shen.lazyderef V18161 V18162) (if (cons? V18109) (let Ds (tl V18109) (do (shen.incinfs) (shen.udefs* V18159 V18160 Ds V18162 V18163))) false)) Case)))
48
48
 
49
- (defun shen.th* (V2106 V2107 V2108 V2109 V2110) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2106 (cons : (cons V2107 ()))) V2108 V2109 (freeze (fwhen false V2109 V2110)))) (if (= Case false) (let Case (let F (shen.newpv V2109) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2106 V2109)) V2109 (freeze (bind F (shen.sigf (shen.lazyderef V2106 V2109)) V2109 (freeze (call (cons F (cons V2107 ())) V2109 V2110))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2106 V2107 V2109 V2110)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2106 V2107 V2108 V2109 V2110)) (if (= Case false) (let Case (let V1963 (shen.lazyderef V2106 V2109) (if (cons? V1963) (let F (hd V1963) (let V1964 (shen.lazyderef (tl V1963) V2109) (if (= () V1964) (do (shen.incinfs) (shen.th* F (cons --> (cons V2107 ())) V2108 V2109 V2110)) false))) false)) (if (= Case false) (let Case (let V1965 (shen.lazyderef V2106 V2109) (if (cons? V1965) (let F (hd V1965) (let V1966 (shen.lazyderef (tl V1965) V2109) (if (cons? V1966) (let X (hd V1966) (let V1967 (shen.lazyderef (tl V1966) V2109) (if (= () V1967) (let B (shen.newpv V2109) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2107 ()))) V2108 V2109 (freeze (shen.th* X B V2108 V2109 V2110))))) false))) false))) false)) (if (= Case false) (let Case (let V1968 (shen.lazyderef V2106 V2109) (if (cons? V1968) (let V1969 (shen.lazyderef (hd V1968) V2109) (if (= cons V1969) (let V1970 (shen.lazyderef (tl V1968) V2109) (if (cons? V1970) (let X (hd V1970) (let V1971 (shen.lazyderef (tl V1970) V2109) (if (cons? V1971) (let Y (hd V1971) (let V1972 (shen.lazyderef (tl V1971) V2109) (if (= () V1972) (let V1973 (shen.lazyderef V2107 V2109) (if (cons? V1973) (let V1974 (shen.lazyderef (hd V1973) V2109) (if (= list V1974) (let V1975 (shen.lazyderef (tl V1973) V2109) (if (cons? V1975) (let A (hd V1975) (let V1976 (shen.lazyderef (tl V1975) V2109) (if (= () V1976) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V1976) (do (shen.bindv V1976 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1976 V2109) Result))) false)))) (if (shen.pvar? V1975) (let A (shen.newpv V2109) (do (shen.bindv V1975 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1975 V2109) Result)))) false))) (if (shen.pvar? V1974) (do (shen.bindv V1974 list V2109) (let Result (let V1977 (shen.lazyderef (tl V1973) V2109) (if (cons? V1977) (let A (hd V1977) (let V1978 (shen.lazyderef (tl V1977) V2109) (if (= () V1978) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V1978) (do (shen.bindv V1978 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1978 V2109) Result))) false)))) (if (shen.pvar? V1977) (let A (shen.newpv V2109) (do (shen.bindv V1977 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1977 V2109) Result)))) false))) (do (shen.unbindv V1974 V2109) Result))) false))) (if (shen.pvar? V1973) (let A (shen.newpv V2109) (do (shen.bindv V1973 (cons list (cons A ())) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1973 V2109) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1979 (shen.lazyderef V2106 V2109) (if (cons? V1979) (let V1980 (shen.lazyderef (hd V1979) V2109) (if (= @p V1980) (let V1981 (shen.lazyderef (tl V1979) V2109) (if (cons? V1981) (let X (hd V1981) (let V1982 (shen.lazyderef (tl V1981) V2109) (if (cons? V1982) (let Y (hd V1982) (let V1983 (shen.lazyderef (tl V1982) V2109) (if (= () V1983) (let V1984 (shen.lazyderef V2107 V2109) (if (cons? V1984) (let A (hd V1984) (let V1985 (shen.lazyderef (tl V1984) V2109) (if (cons? V1985) (let V1986 (shen.lazyderef (hd V1985) V2109) (if (= * V1986) (let V1987 (shen.lazyderef (tl V1985) V2109) (if (cons? V1987) (let B (hd V1987) (let V1988 (shen.lazyderef (tl V1987) V2109) (if (= () V1988) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (if (shen.pvar? V1988) (do (shen.bindv V1988 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1988 V2109) Result))) false)))) (if (shen.pvar? V1987) (let B (shen.newpv V2109) (do (shen.bindv V1987 (cons B ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1987 V2109) Result)))) false))) (if (shen.pvar? V1986) (do (shen.bindv V1986 * V2109) (let Result (let V1989 (shen.lazyderef (tl V1985) V2109) (if (cons? V1989) (let B (hd V1989) (let V1990 (shen.lazyderef (tl V1989) V2109) (if (= () V1990) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (if (shen.pvar? V1990) (do (shen.bindv V1990 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1990 V2109) Result))) false)))) (if (shen.pvar? V1989) (let B (shen.newpv V2109) (do (shen.bindv V1989 (cons B ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1989 V2109) Result)))) false))) (do (shen.unbindv V1986 V2109) Result))) false))) (if (shen.pvar? V1985) (let B (shen.newpv V2109) (do (shen.bindv V1985 (cons * (cons B ())) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1985 V2109) Result)))) false)))) (if (shen.pvar? V1984) (let A (shen.newpv V2109) (let B (shen.newpv V2109) (do (shen.bindv V1984 (cons A (cons * (cons B ()))) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1984 V2109) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1991 (shen.lazyderef V2106 V2109) (if (cons? V1991) (let V1992 (shen.lazyderef (hd V1991) V2109) (if (= @v V1992) (let V1993 (shen.lazyderef (tl V1991) V2109) (if (cons? V1993) (let X (hd V1993) (let V1994 (shen.lazyderef (tl V1993) V2109) (if (cons? V1994) (let Y (hd V1994) (let V1995 (shen.lazyderef (tl V1994) V2109) (if (= () V1995) (let V1996 (shen.lazyderef V2107 V2109) (if (cons? V1996) (let V1997 (shen.lazyderef (hd V1996) V2109) (if (= vector V1997) (let V1998 (shen.lazyderef (tl V1996) V2109) (if (cons? V1998) (let A (hd V1998) (let V1999 (shen.lazyderef (tl V1998) V2109) (if (= () V1999) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V1999) (do (shen.bindv V1999 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1999 V2109) Result))) false)))) (if (shen.pvar? V1998) (let A (shen.newpv V2109) (do (shen.bindv V1998 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1998 V2109) Result)))) false))) (if (shen.pvar? V1997) (do (shen.bindv V1997 vector V2109) (let Result (let V2000 (shen.lazyderef (tl V1996) V2109) (if (cons? V2000) (let A (hd V2000) (let V2001 (shen.lazyderef (tl V2000) V2109) (if (= () V2001) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V2001) (do (shen.bindv V2001 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V2001 V2109) Result))) false)))) (if (shen.pvar? V2000) (let A (shen.newpv V2109) (do (shen.bindv V2000 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V2000 V2109) Result)))) false))) (do (shen.unbindv V1997 V2109) Result))) false))) (if (shen.pvar? V1996) (let A (shen.newpv V2109) (do (shen.bindv V1996 (cons vector (cons A ())) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1996 V2109) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2002 (shen.lazyderef V2106 V2109) (if (cons? V2002) (let V2003 (shen.lazyderef (hd V2002) V2109) (if (= @s V2003) (let V2004 (shen.lazyderef (tl V2002) V2109) (if (cons? V2004) (let X (hd V2004) (let V2005 (shen.lazyderef (tl V2004) V2109) (if (cons? V2005) (let Y (hd V2005) (let V2006 (shen.lazyderef (tl V2005) V2109) (if (= () V2006) (let V2007 (shen.lazyderef V2107 V2109) (if (= string V2007) (do (shen.incinfs) (shen.th* X string V2108 V2109 (freeze (shen.th* Y string V2108 V2109 V2110)))) (if (shen.pvar? V2007) (do (shen.bindv V2007 string V2109) (let Result (do (shen.incinfs) (shen.th* X string V2108 V2109 (freeze (shen.th* Y string V2108 V2109 V2110)))) (do (shen.unbindv V2007 V2109) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2008 (shen.lazyderef V2106 V2109) (if (cons? V2008) (let V2009 (shen.lazyderef (hd V2008) V2109) (if (= lambda V2009) (let V2010 (shen.lazyderef (tl V2008) V2109) (if (cons? V2010) (let X (hd V2010) (let V2011 (shen.lazyderef (tl V2010) V2109) (if (cons? V2011) (let Y (hd V2011) (let V2012 (shen.lazyderef (tl V2011) V2109) (if (= () V2012) (let V2013 (shen.lazyderef V2107 V2109) (if (cons? V2013) (let A (hd V2013) (let V2014 (shen.lazyderef (tl V2013) V2109) (if (cons? V2014) (let V2015 (shen.lazyderef (hd V2014) V2109) (if (= --> V2015) (let V2016 (shen.lazyderef (tl V2014) V2109) (if (cons? V2016) (let B (hd V2016) (let V2017 (shen.lazyderef (tl V2016) V2109) (if (= () V2017) (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (if (shen.pvar? V2017) (do (shen.bindv V2017 () V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2017 V2109) Result))) false)))) (if (shen.pvar? V2016) (let B (shen.newpv V2109) (do (shen.bindv V2016 (cons B ()) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2016 V2109) Result)))) false))) (if (shen.pvar? V2015) (do (shen.bindv V2015 --> V2109) (let Result (let V2018 (shen.lazyderef (tl V2014) V2109) (if (cons? V2018) (let B (hd V2018) (let V2019 (shen.lazyderef (tl V2018) V2109) (if (= () V2019) (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (if (shen.pvar? V2019) (do (shen.bindv V2019 () V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2019 V2109) Result))) false)))) (if (shen.pvar? V2018) (let B (shen.newpv V2109) (do (shen.bindv V2018 (cons B ()) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2018 V2109) Result)))) false))) (do (shen.unbindv V2015 V2109) Result))) false))) (if (shen.pvar? V2014) (let B (shen.newpv V2109) (do (shen.bindv V2014 (cons --> (cons B ())) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2014 V2109) Result)))) false)))) (if (shen.pvar? V2013) (let A (shen.newpv V2109) (let B (shen.newpv V2109) (do (shen.bindv V2013 (cons A (cons --> (cons B ()))) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2013 V2109) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2020 (shen.lazyderef V2106 V2109) (if (cons? V2020) (let V2021 (shen.lazyderef (hd V2020) V2109) (if (= let V2021) (let V2022 (shen.lazyderef (tl V2020) V2109) (if (cons? V2022) (let X (hd V2022) (let V2023 (shen.lazyderef (tl V2022) V2109) (if (cons? V2023) (let Y (hd V2023) (let V2024 (shen.lazyderef (tl V2023) V2109) (if (cons? V2024) (let Z (hd V2024) (let V2025 (shen.lazyderef (tl V2024) V2109) (if (= () V2025) (let W (shen.newpv V2109) (let X&& (shen.newpv V2109) (let B (shen.newpv V2109) (do (shen.incinfs) (shen.th* Y B V2108 V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Z V2109)) V2109 (freeze (shen.th* W V2107 (cons (cons X&& (cons : (cons B ()))) V2108) V2109 V2110))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2026 (shen.lazyderef V2106 V2109) (if (cons? V2026) (let V2027 (shen.lazyderef (hd V2026) V2109) (if (= open V2027) (let V2028 (shen.lazyderef (tl V2026) V2109) (if (cons? V2028) (let FileName (hd V2028) (let V2029 (shen.lazyderef (tl V2028) V2109) (if (cons? V2029) (let Direction1959 (hd V2029) (let V2030 (shen.lazyderef (tl V2029) V2109) (if (= () V2030) (let V2031 (shen.lazyderef V2107 V2109) (if (cons? V2031) (let V2032 (shen.lazyderef (hd V2031) V2109) (if (= stream V2032) (let V2033 (shen.lazyderef (tl V2031) V2109) (if (cons? V2033) (let Direction (hd V2033) (let V2034 (shen.lazyderef (tl V2033) V2109) (if (= () V2034) (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (if (shen.pvar? V2034) (do (shen.bindv V2034 () V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2034 V2109) Result))) false)))) (if (shen.pvar? V2033) (let Direction (shen.newpv V2109) (do (shen.bindv V2033 (cons Direction ()) V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2033 V2109) Result)))) false))) (if (shen.pvar? V2032) (do (shen.bindv V2032 stream V2109) (let Result (let V2035 (shen.lazyderef (tl V2031) V2109) (if (cons? V2035) (let Direction (hd V2035) (let V2036 (shen.lazyderef (tl V2035) V2109) (if (= () V2036) (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (if (shen.pvar? V2036) (do (shen.bindv V2036 () V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2036 V2109) Result))) false)))) (if (shen.pvar? V2035) (let Direction (shen.newpv V2109) (do (shen.bindv V2035 (cons Direction ()) V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2035 V2109) Result)))) false))) (do (shen.unbindv V2032 V2109) Result))) false))) (if (shen.pvar? V2031) (let Direction (shen.newpv V2109) (do (shen.bindv V2031 (cons stream (cons Direction ())) V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2031 V2109) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2037 (shen.lazyderef V2106 V2109) (if (cons? V2037) (let V2038 (shen.lazyderef (hd V2037) V2109) (if (= type V2038) (let V2039 (shen.lazyderef (tl V2037) V2109) (if (cons? V2039) (let X (hd V2039) (let V2040 (shen.lazyderef (tl V2039) V2109) (if (cons? V2040) (let A (hd V2040) (let V2041 (shen.lazyderef (tl V2040) V2109) (if (= () V2041) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (unify A V2107 V2109 (freeze (shen.th* X A V2108 V2109 V2110)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2042 (shen.lazyderef V2106 V2109) (if (cons? V2042) (let V2043 (shen.lazyderef (hd V2042) V2109) (if (= input+ V2043) (let V2044 (shen.lazyderef (tl V2042) V2109) (if (cons? V2044) (let A (hd V2044) (let V2045 (shen.lazyderef (tl V2044) V2109) (if (cons? V2045) (let Stream (hd V2045) (let V2046 (shen.lazyderef (tl V2045) V2109) (if (= () V2046) (let C (shen.newpv V2109) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2109)) V2109 (freeze (unify V2107 C V2109 (freeze (shen.th* Stream (cons stream (cons in ())) V2108 V2109 V2110))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2047 (shen.lazyderef V2106 V2109) (if (cons? V2047) (let V2048 (shen.lazyderef (hd V2047) V2109) (if (= set V2048) (let V2049 (shen.lazyderef (tl V2047) V2109) (if (cons? V2049) (let Var (hd V2049) (let V2050 (shen.lazyderef (tl V2049) V2109) (if (cons? V2050) (let Val (hd V2050) (let V2051 (shen.lazyderef (tl V2050) V2109) (if (= () V2051) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (shen.th* Var symbol V2108 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* (cons value (cons Var ())) V2107 V2108 V2109 (freeze (shen.th* Val V2107 V2108 V2109 V2110)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2109) (do (shen.incinfs) (shen.t*-hyps V2108 NewHyp V2109 (freeze (shen.th* V2106 V2107 NewHyp V2109 V2110))))) (if (= Case false) (let Case (let V2052 (shen.lazyderef V2106 V2109) (if (cons? V2052) (let V2053 (shen.lazyderef (hd V2052) V2109) (if (= define V2053) (let V2054 (shen.lazyderef (tl V2052) V2109) (if (cons? V2054) (let F (hd V2054) (let X (tl V2054) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (shen.t*-def (cons define (cons F X)) V2107 V2108 V2109 V2110)))))) false)) false)) false)) (if (= Case false) (let Case (let V2055 (shen.lazyderef V2106 V2109) (if (cons? V2055) (let V2056 (shen.lazyderef (hd V2055) V2109) (if (= defmacro V2056) (let V2057 (shen.lazyderef V2107 V2109) (if (= unit V2057) (do (shen.incinfs) (cut Throwcontrol V2109 V2110)) (if (shen.pvar? V2057) (do (shen.bindv V2057 unit V2109) (let Result (do (shen.incinfs) (cut Throwcontrol V2109 V2110)) (do (shen.unbindv V2057 V2109) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2058 (shen.lazyderef V2106 V2109) (if (cons? V2058) (let V2059 (shen.lazyderef (hd V2058) V2109) (if (= shen.process-datatype V2059) (let V2060 (shen.lazyderef V2107 V2109) (if (= symbol V2060) (do (shen.incinfs) (thaw V2110)) (if (shen.pvar? V2060) (do (shen.bindv V2060 symbol V2109) (let Result (do (shen.incinfs) (thaw V2110)) (do (shen.unbindv V2060 V2109) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2061 (shen.lazyderef V2106 V2109) (if (cons? V2061) (let V2062 (shen.lazyderef (hd V2061) V2109) (if (= shen.synonyms-help V2062) (let V2063 (shen.lazyderef V2107 V2109) (if (= symbol V2063) (do (shen.incinfs) (thaw V2110)) (if (shen.pvar? V2063) (do (shen.bindv V2063 symbol V2109) (let Result (do (shen.incinfs) (thaw V2110)) (do (shen.unbindv V2063 V2109) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2109) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2109 (freeze (shen.udefs* (cons V2106 (cons : (cons V2107 ()))) V2108 Datatypes V2109 V2110))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
49
+ (defun shen.th* (V18169 V18170 V18171 V18172 V18173) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V18169 (cons : (cons V18170 ()))) V18171 V18172 (freeze (fwhen false V18172 V18173)))) (if (= Case false) (let Case (let F (shen.newpv V18172) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V18169 V18172)) V18172 (freeze (bind F (shen.sigf (shen.lazyderef V18169 V18172)) V18172 (freeze (call (cons F (cons V18170 ())) V18172 V18173))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V18169 V18170 V18172 V18173)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V18169 V18170 V18171 V18172 V18173)) (if (= Case false) (let Case (let V18004 (shen.lazyderef V18169 V18172) (if (cons? V18004) (let F (hd V18004) (let V18005 (shen.lazyderef (tl V18004) V18172) (if (= () V18005) (do (shen.incinfs) (shen.th* F (cons --> (cons V18170 ())) V18171 V18172 V18173)) false))) false)) (if (= Case false) (let Case (let V18006 (shen.lazyderef V18169 V18172) (if (cons? V18006) (let F (hd V18006) (let V18007 (shen.lazyderef (tl V18006) V18172) (if (cons? V18007) (let X (hd V18007) (let V18008 (shen.lazyderef (tl V18007) V18172) (if (= () V18008) (let B (shen.newpv V18172) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V18170 ()))) V18171 V18172 (freeze (shen.th* X B V18171 V18172 V18173))))) false))) false))) false)) (if (= Case false) (let Case (let V18009 (shen.lazyderef V18169 V18172) (if (cons? V18009) (let V18010 (shen.lazyderef (hd V18009) V18172) (if (= cons V18010) (let V18011 (shen.lazyderef (tl V18009) V18172) (if (cons? V18011) (let X (hd V18011) (let V18012 (shen.lazyderef (tl V18011) V18172) (if (cons? V18012) (let Y (hd V18012) (let V18013 (shen.lazyderef (tl V18012) V18172) (if (= () V18013) (let V18014 (shen.lazyderef V18170 V18172) (if (cons? V18014) (let V18015 (shen.lazyderef (hd V18014) V18172) (if (= list V18015) (let V18016 (shen.lazyderef (tl V18014) V18172) (if (cons? V18016) (let A (hd V18016) (let V18017 (shen.lazyderef (tl V18016) V18172) (if (= () V18017) (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (if (shen.pvar? V18017) (do (shen.bindv V18017 () V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18017 V18172) Result))) false)))) (if (shen.pvar? V18016) (let A (shen.newpv V18172) (do (shen.bindv V18016 (cons A ()) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18016 V18172) Result)))) false))) (if (shen.pvar? V18015) (do (shen.bindv V18015 list V18172) (let Result (let V18018 (shen.lazyderef (tl V18014) V18172) (if (cons? V18018) (let A (hd V18018) (let V18019 (shen.lazyderef (tl V18018) V18172) (if (= () V18019) (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (if (shen.pvar? V18019) (do (shen.bindv V18019 () V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18019 V18172) Result))) false)))) (if (shen.pvar? V18018) (let A (shen.newpv V18172) (do (shen.bindv V18018 (cons A ()) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18018 V18172) Result)))) false))) (do (shen.unbindv V18015 V18172) Result))) false))) (if (shen.pvar? V18014) (let A (shen.newpv V18172) (do (shen.bindv V18014 (cons list (cons A ())) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons list (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18014 V18172) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18020 (shen.lazyderef V18169 V18172) (if (cons? V18020) (let V18021 (shen.lazyderef (hd V18020) V18172) (if (= @p V18021) (let V18022 (shen.lazyderef (tl V18020) V18172) (if (cons? V18022) (let X (hd V18022) (let V18023 (shen.lazyderef (tl V18022) V18172) (if (cons? V18023) (let Y (hd V18023) (let V18024 (shen.lazyderef (tl V18023) V18172) (if (= () V18024) (let V18025 (shen.lazyderef V18170 V18172) (if (cons? V18025) (let A (hd V18025) (let V18026 (shen.lazyderef (tl V18025) V18172) (if (cons? V18026) (let V18027 (shen.lazyderef (hd V18026) V18172) (if (= * V18027) (let V18028 (shen.lazyderef (tl V18026) V18172) (if (cons? V18028) (let B (hd V18028) (let V18029 (shen.lazyderef (tl V18028) V18172) (if (= () V18029) (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (if (shen.pvar? V18029) (do (shen.bindv V18029 () V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (do (shen.unbindv V18029 V18172) Result))) false)))) (if (shen.pvar? V18028) (let B (shen.newpv V18172) (do (shen.bindv V18028 (cons B ()) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (do (shen.unbindv V18028 V18172) Result)))) false))) (if (shen.pvar? V18027) (do (shen.bindv V18027 * V18172) (let Result (let V18030 (shen.lazyderef (tl V18026) V18172) (if (cons? V18030) (let B (hd V18030) (let V18031 (shen.lazyderef (tl V18030) V18172) (if (= () V18031) (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (if (shen.pvar? V18031) (do (shen.bindv V18031 () V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (do (shen.unbindv V18031 V18172) Result))) false)))) (if (shen.pvar? V18030) (let B (shen.newpv V18172) (do (shen.bindv V18030 (cons B ()) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (do (shen.unbindv V18030 V18172) Result)))) false))) (do (shen.unbindv V18027 V18172) Result))) false))) (if (shen.pvar? V18026) (let B (shen.newpv V18172) (do (shen.bindv V18026 (cons * (cons B ())) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (do (shen.unbindv V18026 V18172) Result)))) false)))) (if (shen.pvar? V18025) (let A (shen.newpv V18172) (let B (shen.newpv V18172) (do (shen.bindv V18025 (cons A (cons * (cons B ()))) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y B V18171 V18172 V18173)))) (do (shen.unbindv V18025 V18172) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18032 (shen.lazyderef V18169 V18172) (if (cons? V18032) (let V18033 (shen.lazyderef (hd V18032) V18172) (if (= @v V18033) (let V18034 (shen.lazyderef (tl V18032) V18172) (if (cons? V18034) (let X (hd V18034) (let V18035 (shen.lazyderef (tl V18034) V18172) (if (cons? V18035) (let Y (hd V18035) (let V18036 (shen.lazyderef (tl V18035) V18172) (if (= () V18036) (let V18037 (shen.lazyderef V18170 V18172) (if (cons? V18037) (let V18038 (shen.lazyderef (hd V18037) V18172) (if (= vector V18038) (let V18039 (shen.lazyderef (tl V18037) V18172) (if (cons? V18039) (let A (hd V18039) (let V18040 (shen.lazyderef (tl V18039) V18172) (if (= () V18040) (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (if (shen.pvar? V18040) (do (shen.bindv V18040 () V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18040 V18172) Result))) false)))) (if (shen.pvar? V18039) (let A (shen.newpv V18172) (do (shen.bindv V18039 (cons A ()) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18039 V18172) Result)))) false))) (if (shen.pvar? V18038) (do (shen.bindv V18038 vector V18172) (let Result (let V18041 (shen.lazyderef (tl V18037) V18172) (if (cons? V18041) (let A (hd V18041) (let V18042 (shen.lazyderef (tl V18041) V18172) (if (= () V18042) (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (if (shen.pvar? V18042) (do (shen.bindv V18042 () V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18042 V18172) Result))) false)))) (if (shen.pvar? V18041) (let A (shen.newpv V18172) (do (shen.bindv V18041 (cons A ()) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18041 V18172) Result)))) false))) (do (shen.unbindv V18038 V18172) Result))) false))) (if (shen.pvar? V18037) (let A (shen.newpv V18172) (do (shen.bindv V18037 (cons vector (cons A ())) V18172) (let Result (do (shen.incinfs) (shen.th* X A V18171 V18172 (freeze (shen.th* Y (cons vector (cons A ())) V18171 V18172 V18173)))) (do (shen.unbindv V18037 V18172) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18043 (shen.lazyderef V18169 V18172) (if (cons? V18043) (let V18044 (shen.lazyderef (hd V18043) V18172) (if (= @s V18044) (let V18045 (shen.lazyderef (tl V18043) V18172) (if (cons? V18045) (let X (hd V18045) (let V18046 (shen.lazyderef (tl V18045) V18172) (if (cons? V18046) (let Y (hd V18046) (let V18047 (shen.lazyderef (tl V18046) V18172) (if (= () V18047) (let V18048 (shen.lazyderef V18170 V18172) (if (= string V18048) (do (shen.incinfs) (shen.th* X string V18171 V18172 (freeze (shen.th* Y string V18171 V18172 V18173)))) (if (shen.pvar? V18048) (do (shen.bindv V18048 string V18172) (let Result (do (shen.incinfs) (shen.th* X string V18171 V18172 (freeze (shen.th* Y string V18171 V18172 V18173)))) (do (shen.unbindv V18048 V18172) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18049 (shen.lazyderef V18169 V18172) (if (cons? V18049) (let V18050 (shen.lazyderef (hd V18049) V18172) (if (= lambda V18050) (let V18051 (shen.lazyderef (tl V18049) V18172) (if (cons? V18051) (let X (hd V18051) (let V18052 (shen.lazyderef (tl V18051) V18172) (if (cons? V18052) (let Y (hd V18052) (let V18053 (shen.lazyderef (tl V18052) V18172) (if (= () V18053) (let V18054 (shen.lazyderef V18170 V18172) (if (cons? V18054) (let A (hd V18054) (let V18055 (shen.lazyderef (tl V18054) V18172) (if (cons? V18055) (let V18056 (shen.lazyderef (hd V18055) V18172) (if (= --> V18056) (let V18057 (shen.lazyderef (tl V18055) V18172) (if (cons? V18057) (let B (hd V18057) (let V18058 (shen.lazyderef (tl V18057) V18172) (if (= () V18058) (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (if (shen.pvar? V18058) (do (shen.bindv V18058 () V18172) (let Result (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (do (shen.unbindv V18058 V18172) Result))) false)))) (if (shen.pvar? V18057) (let B (shen.newpv V18172) (do (shen.bindv V18057 (cons B ()) V18172) (let Result (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (do (shen.unbindv V18057 V18172) Result)))) false))) (if (shen.pvar? V18056) (do (shen.bindv V18056 --> V18172) (let Result (let V18059 (shen.lazyderef (tl V18055) V18172) (if (cons? V18059) (let B (hd V18059) (let V18060 (shen.lazyderef (tl V18059) V18172) (if (= () V18060) (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (if (shen.pvar? V18060) (do (shen.bindv V18060 () V18172) (let Result (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (do (shen.unbindv V18060 V18172) Result))) false)))) (if (shen.pvar? V18059) (let B (shen.newpv V18172) (do (shen.bindv V18059 (cons B ()) V18172) (let Result (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (do (shen.unbindv V18059 V18172) Result)))) false))) (do (shen.unbindv V18056 V18172) Result))) false))) (if (shen.pvar? V18055) (let B (shen.newpv V18172) (do (shen.bindv V18055 (cons --> (cons B ())) V18172) (let Result (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (do (shen.unbindv V18055 V18172) Result)))) false)))) (if (shen.pvar? V18054) (let A (shen.newpv V18172) (let B (shen.newpv V18172) (do (shen.bindv V18054 (cons A (cons --> (cons B ()))) V18172) (let Result (let Z (shen.newpv V18172) (let X&& (shen.newpv V18172) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Y V18172)) V18172 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V18171) V18172 V18173)))))))))) (do (shen.unbindv V18054 V18172) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18061 (shen.lazyderef V18169 V18172) (if (cons? V18061) (let V18062 (shen.lazyderef (hd V18061) V18172) (if (= let V18062) (let V18063 (shen.lazyderef (tl V18061) V18172) (if (cons? V18063) (let X (hd V18063) (let V18064 (shen.lazyderef (tl V18063) V18172) (if (cons? V18064) (let Y (hd V18064) (let V18065 (shen.lazyderef (tl V18064) V18172) (if (cons? V18065) (let Z (hd V18065) (let V18066 (shen.lazyderef (tl V18065) V18172) (if (= () V18066) (let W (shen.newpv V18172) (let X&& (shen.newpv V18172) (let B (shen.newpv V18172) (do (shen.incinfs) (shen.th* Y B V18171 V18172 (freeze (bind X&& (shen.placeholder) V18172 (freeze (bind W (shen.ebr (shen.lazyderef X&& V18172) (shen.lazyderef X V18172) (shen.lazyderef Z V18172)) V18172 (freeze (shen.th* W V18170 (cons (cons X&& (cons : (cons B ()))) V18171) V18172 V18173))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18067 (shen.lazyderef V18169 V18172) (if (cons? V18067) (let V18068 (shen.lazyderef (hd V18067) V18172) (if (= open V18068) (let V18069 (shen.lazyderef (tl V18067) V18172) (if (cons? V18069) (let FileName (hd V18069) (let V18070 (shen.lazyderef (tl V18069) V18172) (if (cons? V18070) (let Direction18000 (hd V18070) (let V18071 (shen.lazyderef (tl V18070) V18172) (if (= () V18071) (let V18072 (shen.lazyderef V18170 V18172) (if (cons? V18072) (let V18073 (shen.lazyderef (hd V18072) V18172) (if (= stream V18073) (let V18074 (shen.lazyderef (tl V18072) V18172) (if (cons? V18074) (let Direction (hd V18074) (let V18075 (shen.lazyderef (tl V18074) V18172) (if (= () V18075) (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (if (shen.pvar? V18075) (do (shen.bindv V18075 () V18172) (let Result (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (do (shen.unbindv V18075 V18172) Result))) false)))) (if (shen.pvar? V18074) (let Direction (shen.newpv V18172) (do (shen.bindv V18074 (cons Direction ()) V18172) (let Result (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (do (shen.unbindv V18074 V18172) Result)))) false))) (if (shen.pvar? V18073) (do (shen.bindv V18073 stream V18172) (let Result (let V18076 (shen.lazyderef (tl V18072) V18172) (if (cons? V18076) (let Direction (hd V18076) (let V18077 (shen.lazyderef (tl V18076) V18172) (if (= () V18077) (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (if (shen.pvar? V18077) (do (shen.bindv V18077 () V18172) (let Result (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (do (shen.unbindv V18077 V18172) Result))) false)))) (if (shen.pvar? V18076) (let Direction (shen.newpv V18172) (do (shen.bindv V18076 (cons Direction ()) V18172) (let Result (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (do (shen.unbindv V18076 V18172) Result)))) false))) (do (shen.unbindv V18073 V18172) Result))) false))) (if (shen.pvar? V18072) (let Direction (shen.newpv V18172) (do (shen.bindv V18072 (cons stream (cons Direction ())) V18172) (let Result (do (shen.incinfs) (unify! Direction Direction18000 V18172 (freeze (cut Throwcontrol V18172 (freeze (fwhen (element? (shen.lazyderef Direction V18172) (cons in (cons out ()))) V18172 (freeze (shen.th* FileName string V18171 V18172 V18173)))))))) (do (shen.unbindv V18072 V18172) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18078 (shen.lazyderef V18169 V18172) (if (cons? V18078) (let V18079 (shen.lazyderef (hd V18078) V18172) (if (= type V18079) (let V18080 (shen.lazyderef (tl V18078) V18172) (if (cons? V18080) (let X (hd V18080) (let V18081 (shen.lazyderef (tl V18080) V18172) (if (cons? V18081) (let A (hd V18081) (let V18082 (shen.lazyderef (tl V18081) V18172) (if (= () V18082) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (unify A V18170 V18172 (freeze (shen.th* X A V18171 V18172 V18173)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18083 (shen.lazyderef V18169 V18172) (if (cons? V18083) (let V18084 (shen.lazyderef (hd V18083) V18172) (if (= input+ V18084) (let V18085 (shen.lazyderef (tl V18083) V18172) (if (cons? V18085) (let A (hd V18085) (let V18086 (shen.lazyderef (tl V18085) V18172) (if (cons? V18086) (let Stream (hd V18086) (let V18087 (shen.lazyderef (tl V18086) V18172) (if (= () V18087) (let C (shen.newpv V18172) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V18172)) V18172 (freeze (unify V18170 C V18172 (freeze (shen.th* Stream (cons stream (cons in ())) V18171 V18172 V18173))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V18088 (shen.lazyderef V18169 V18172) (if (cons? V18088) (let V18089 (shen.lazyderef (hd V18088) V18172) (if (= set V18089) (let V18090 (shen.lazyderef (tl V18088) V18172) (if (cons? V18090) (let Var (hd V18090) (let V18091 (shen.lazyderef (tl V18090) V18172) (if (cons? V18091) (let Val (hd V18091) (let V18092 (shen.lazyderef (tl V18091) V18172) (if (= () V18092) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (shen.th* Var symbol V18171 V18172 (freeze (cut Throwcontrol V18172 (freeze (shen.th* (cons value (cons Var ())) V18170 V18171 V18172 (freeze (shen.th* Val V18170 V18171 V18172 V18173)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V18172) (do (shen.incinfs) (shen.t*-hyps V18171 NewHyp V18172 (freeze (shen.th* V18169 V18170 NewHyp V18172 V18173))))) (if (= Case false) (let Case (let V18093 (shen.lazyderef V18169 V18172) (if (cons? V18093) (let V18094 (shen.lazyderef (hd V18093) V18172) (if (= define V18094) (let V18095 (shen.lazyderef (tl V18093) V18172) (if (cons? V18095) (let F (hd V18095) (let X (tl V18095) (do (shen.incinfs) (cut Throwcontrol V18172 (freeze (shen.t*-def (cons define (cons F X)) V18170 V18171 V18172 V18173)))))) false)) false)) false)) (if (= Case false) (let Case (let V18096 (shen.lazyderef V18169 V18172) (if (cons? V18096) (let V18097 (shen.lazyderef (hd V18096) V18172) (if (= defmacro V18097) (let V18098 (shen.lazyderef V18170 V18172) (if (= unit V18098) (do (shen.incinfs) (cut Throwcontrol V18172 V18173)) (if (shen.pvar? V18098) (do (shen.bindv V18098 unit V18172) (let Result (do (shen.incinfs) (cut Throwcontrol V18172 V18173)) (do (shen.unbindv V18098 V18172) Result))) false))) false)) false)) (if (= Case false) (let Case (let V18099 (shen.lazyderef V18169 V18172) (if (cons? V18099) (let V18100 (shen.lazyderef (hd V18099) V18172) (if (= shen.process-datatype V18100) (let V18101 (shen.lazyderef V18170 V18172) (if (= symbol V18101) (do (shen.incinfs) (thaw V18173)) (if (shen.pvar? V18101) (do (shen.bindv V18101 symbol V18172) (let Result (do (shen.incinfs) (thaw V18173)) (do (shen.unbindv V18101 V18172) Result))) false))) false)) false)) (if (= Case false) (let Case (let V18102 (shen.lazyderef V18169 V18172) (if (cons? V18102) (let V18103 (shen.lazyderef (hd V18102) V18172) (if (= shen.synonyms-help V18103) (let V18104 (shen.lazyderef V18170 V18172) (if (= symbol V18104) (do (shen.incinfs) (thaw V18173)) (if (shen.pvar? V18104) (do (shen.bindv V18104 symbol V18172) (let Result (do (shen.incinfs) (thaw V18173)) (do (shen.unbindv V18104 V18172) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V18172) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V18172 (freeze (shen.udefs* (cons V18169 (cons : (cons V18170 ()))) V18171 Datatypes V18172 V18173))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
50
50
 
51
- (defun shen.t*-hyps (V2111 V2112 V2113 V2114) (let Case (let V1874 (shen.lazyderef V2111 V2113) (if (cons? V1874) (let V1875 (shen.lazyderef (hd V1874) V2113) (if (cons? V1875) (let V1876 (shen.lazyderef (hd V1875) V2113) (if (cons? V1876) (let V1877 (shen.lazyderef (hd V1876) V2113) (if (= cons V1877) (let V1878 (shen.lazyderef (tl V1876) V2113) (if (cons? V1878) (let X (hd V1878) (let V1879 (shen.lazyderef (tl V1878) V2113) (if (cons? V1879) (let Y (hd V1879) (let V1880 (shen.lazyderef (tl V1879) V2113) (if (= () V1880) (let V1881 (shen.lazyderef (tl V1875) V2113) (if (cons? V1881) (let V1882 (shen.lazyderef (hd V1881) V2113) (if (= : V1882) (let V1883 (shen.lazyderef (tl V1881) V2113) (if (cons? V1883) (let V1884 (shen.lazyderef (hd V1883) V2113) (if (cons? V1884) (let V1885 (shen.lazyderef (hd V1884) V2113) (if (= list V1885) (let V1886 (shen.lazyderef (tl V1884) V2113) (if (cons? V1886) (let A (hd V1886) (let V1887 (shen.lazyderef (tl V1886) V2113) (if (= () V1887) (let V1888 (shen.lazyderef (tl V1883) V2113) (if (= () V1888) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1888) (do (shen.bindv V1888 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1888 V2113) Result))) false))) (if (shen.pvar? V1887) (do (shen.bindv V1887 () V2113) (let Result (let V1889 (shen.lazyderef (tl V1883) V2113) (if (= () V1889) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1889) (do (shen.bindv V1889 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1889 V2113) Result))) false))) (do (shen.unbindv V1887 V2113) Result))) false)))) (if (shen.pvar? V1886) (let A (shen.newpv V2113) (do (shen.bindv V1886 (cons A ()) V2113) (let Result (let V1890 (shen.lazyderef (tl V1883) V2113) (if (= () V1890) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1890) (do (shen.bindv V1890 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1890 V2113) Result))) false))) (do (shen.unbindv V1886 V2113) Result)))) false))) (if (shen.pvar? V1885) (do (shen.bindv V1885 list V2113) (let Result (let V1891 (shen.lazyderef (tl V1884) V2113) (if (cons? V1891) (let A (hd V1891) (let V1892 (shen.lazyderef (tl V1891) V2113) (if (= () V1892) (let V1893 (shen.lazyderef (tl V1883) V2113) (if (= () V1893) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1893) (do (shen.bindv V1893 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1893 V2113) Result))) false))) (if (shen.pvar? V1892) (do (shen.bindv V1892 () V2113) (let Result (let V1894 (shen.lazyderef (tl V1883) V2113) (if (= () V1894) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1894) (do (shen.bindv V1894 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1894 V2113) Result))) false))) (do (shen.unbindv V1892 V2113) Result))) false)))) (if (shen.pvar? V1891) (let A (shen.newpv V2113) (do (shen.bindv V1891 (cons A ()) V2113) (let Result (let V1895 (shen.lazyderef (tl V1883) V2113) (if (= () V1895) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1895) (do (shen.bindv V1895 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1895 V2113) Result))) false))) (do (shen.unbindv V1891 V2113) Result)))) false))) (do (shen.unbindv V1885 V2113) Result))) false))) (if (shen.pvar? V1884) (let A (shen.newpv V2113) (do (shen.bindv V1884 (cons list (cons A ())) V2113) (let Result (let V1896 (shen.lazyderef (tl V1883) V2113) (if (= () V1896) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1896) (do (shen.bindv V1896 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1896 V2113) Result))) false))) (do (shen.unbindv V1884 V2113) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1897 (shen.lazyderef V2111 V2113) (if (cons? V1897) (let V1898 (shen.lazyderef (hd V1897) V2113) (if (cons? V1898) (let V1899 (shen.lazyderef (hd V1898) V2113) (if (cons? V1899) (let V1900 (shen.lazyderef (hd V1899) V2113) (if (= @p V1900) (let V1901 (shen.lazyderef (tl V1899) V2113) (if (cons? V1901) (let X (hd V1901) (let V1902 (shen.lazyderef (tl V1901) V2113) (if (cons? V1902) (let Y (hd V1902) (let V1903 (shen.lazyderef (tl V1902) V2113) (if (= () V1903) (let V1904 (shen.lazyderef (tl V1898) V2113) (if (cons? V1904) (let V1905 (shen.lazyderef (hd V1904) V2113) (if (= : V1905) (let V1906 (shen.lazyderef (tl V1904) V2113) (if (cons? V1906) (let V1907 (shen.lazyderef (hd V1906) V2113) (if (cons? V1907) (let A (hd V1907) (let V1908 (shen.lazyderef (tl V1907) V2113) (if (cons? V1908) (let V1909 (shen.lazyderef (hd V1908) V2113) (if (= * V1909) (let V1910 (shen.lazyderef (tl V1908) V2113) (if (cons? V1910) (let B (hd V1910) (let V1911 (shen.lazyderef (tl V1910) V2113) (if (= () V1911) (let V1912 (shen.lazyderef (tl V1906) V2113) (if (= () V1912) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1912) (do (shen.bindv V1912 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1912 V2113) Result))) false))) (if (shen.pvar? V1911) (do (shen.bindv V1911 () V2113) (let Result (let V1913 (shen.lazyderef (tl V1906) V2113) (if (= () V1913) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1913) (do (shen.bindv V1913 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1913 V2113) Result))) false))) (do (shen.unbindv V1911 V2113) Result))) false)))) (if (shen.pvar? V1910) (let B (shen.newpv V2113) (do (shen.bindv V1910 (cons B ()) V2113) (let Result (let V1914 (shen.lazyderef (tl V1906) V2113) (if (= () V1914) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1914) (do (shen.bindv V1914 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1914 V2113) Result))) false))) (do (shen.unbindv V1910 V2113) Result)))) false))) (if (shen.pvar? V1909) (do (shen.bindv V1909 * V2113) (let Result (let V1915 (shen.lazyderef (tl V1908) V2113) (if (cons? V1915) (let B (hd V1915) (let V1916 (shen.lazyderef (tl V1915) V2113) (if (= () V1916) (let V1917 (shen.lazyderef (tl V1906) V2113) (if (= () V1917) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1917) (do (shen.bindv V1917 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1917 V2113) Result))) false))) (if (shen.pvar? V1916) (do (shen.bindv V1916 () V2113) (let Result (let V1918 (shen.lazyderef (tl V1906) V2113) (if (= () V1918) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1918) (do (shen.bindv V1918 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1918 V2113) Result))) false))) (do (shen.unbindv V1916 V2113) Result))) false)))) (if (shen.pvar? V1915) (let B (shen.newpv V2113) (do (shen.bindv V1915 (cons B ()) V2113) (let Result (let V1919 (shen.lazyderef (tl V1906) V2113) (if (= () V1919) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1919) (do (shen.bindv V1919 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1919 V2113) Result))) false))) (do (shen.unbindv V1915 V2113) Result)))) false))) (do (shen.unbindv V1909 V2113) Result))) false))) (if (shen.pvar? V1908) (let B (shen.newpv V2113) (do (shen.bindv V1908 (cons * (cons B ())) V2113) (let Result (let V1920 (shen.lazyderef (tl V1906) V2113) (if (= () V1920) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1920) (do (shen.bindv V1920 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1920 V2113) Result))) false))) (do (shen.unbindv V1908 V2113) Result)))) false)))) (if (shen.pvar? V1907) (let A (shen.newpv V2113) (let B (shen.newpv V2113) (do (shen.bindv V1907 (cons A (cons * (cons B ()))) V2113) (let Result (let V1921 (shen.lazyderef (tl V1906) V2113) (if (= () V1921) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1921) (do (shen.bindv V1921 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1921 V2113) Result))) false))) (do (shen.unbindv V1907 V2113) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1922 (shen.lazyderef V2111 V2113) (if (cons? V1922) (let V1923 (shen.lazyderef (hd V1922) V2113) (if (cons? V1923) (let V1924 (shen.lazyderef (hd V1923) V2113) (if (cons? V1924) (let V1925 (shen.lazyderef (hd V1924) V2113) (if (= @v V1925) (let V1926 (shen.lazyderef (tl V1924) V2113) (if (cons? V1926) (let X (hd V1926) (let V1927 (shen.lazyderef (tl V1926) V2113) (if (cons? V1927) (let Y (hd V1927) (let V1928 (shen.lazyderef (tl V1927) V2113) (if (= () V1928) (let V1929 (shen.lazyderef (tl V1923) V2113) (if (cons? V1929) (let V1930 (shen.lazyderef (hd V1929) V2113) (if (= : V1930) (let V1931 (shen.lazyderef (tl V1929) V2113) (if (cons? V1931) (let V1932 (shen.lazyderef (hd V1931) V2113) (if (cons? V1932) (let V1933 (shen.lazyderef (hd V1932) V2113) (if (= vector V1933) (let V1934 (shen.lazyderef (tl V1932) V2113) (if (cons? V1934) (let A (hd V1934) (let V1935 (shen.lazyderef (tl V1934) V2113) (if (= () V1935) (let V1936 (shen.lazyderef (tl V1931) V2113) (if (= () V1936) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1936) (do (shen.bindv V1936 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1936 V2113) Result))) false))) (if (shen.pvar? V1935) (do (shen.bindv V1935 () V2113) (let Result (let V1937 (shen.lazyderef (tl V1931) V2113) (if (= () V1937) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1937) (do (shen.bindv V1937 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1937 V2113) Result))) false))) (do (shen.unbindv V1935 V2113) Result))) false)))) (if (shen.pvar? V1934) (let A (shen.newpv V2113) (do (shen.bindv V1934 (cons A ()) V2113) (let Result (let V1938 (shen.lazyderef (tl V1931) V2113) (if (= () V1938) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1938) (do (shen.bindv V1938 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1938 V2113) Result))) false))) (do (shen.unbindv V1934 V2113) Result)))) false))) (if (shen.pvar? V1933) (do (shen.bindv V1933 vector V2113) (let Result (let V1939 (shen.lazyderef (tl V1932) V2113) (if (cons? V1939) (let A (hd V1939) (let V1940 (shen.lazyderef (tl V1939) V2113) (if (= () V1940) (let V1941 (shen.lazyderef (tl V1931) V2113) (if (= () V1941) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1941) (do (shen.bindv V1941 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1941 V2113) Result))) false))) (if (shen.pvar? V1940) (do (shen.bindv V1940 () V2113) (let Result (let V1942 (shen.lazyderef (tl V1931) V2113) (if (= () V1942) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1942) (do (shen.bindv V1942 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1942 V2113) Result))) false))) (do (shen.unbindv V1940 V2113) Result))) false)))) (if (shen.pvar? V1939) (let A (shen.newpv V2113) (do (shen.bindv V1939 (cons A ()) V2113) (let Result (let V1943 (shen.lazyderef (tl V1931) V2113) (if (= () V1943) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1943) (do (shen.bindv V1943 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1943 V2113) Result))) false))) (do (shen.unbindv V1939 V2113) Result)))) false))) (do (shen.unbindv V1933 V2113) Result))) false))) (if (shen.pvar? V1932) (let A (shen.newpv V2113) (do (shen.bindv V1932 (cons vector (cons A ())) V2113) (let Result (let V1944 (shen.lazyderef (tl V1931) V2113) (if (= () V1944) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1944) (do (shen.bindv V1944 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1944 V2113) Result))) false))) (do (shen.unbindv V1932 V2113) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1945 (shen.lazyderef V2111 V2113) (if (cons? V1945) (let V1946 (shen.lazyderef (hd V1945) V2113) (if (cons? V1946) (let V1947 (shen.lazyderef (hd V1946) V2113) (if (cons? V1947) (let V1948 (shen.lazyderef (hd V1947) V2113) (if (= @s V1948) (let V1949 (shen.lazyderef (tl V1947) V2113) (if (cons? V1949) (let X (hd V1949) (let V1950 (shen.lazyderef (tl V1949) V2113) (if (cons? V1950) (let Y (hd V1950) (let V1951 (shen.lazyderef (tl V1950) V2113) (if (= () V1951) (let V1952 (shen.lazyderef (tl V1946) V2113) (if (cons? V1952) (let V1953 (shen.lazyderef (hd V1952) V2113) (if (= : V1953) (let V1954 (shen.lazyderef (tl V1952) V2113) (if (cons? V1954) (let V1955 (shen.lazyderef (hd V1954) V2113) (if (= string V1955) (let V1956 (shen.lazyderef (tl V1954) V2113) (if (= () V1956) (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1956) (do (shen.bindv V1956 () V2113) (let Result (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1956 V2113) Result))) false))) (if (shen.pvar? V1955) (do (shen.bindv V1955 string V2113) (let Result (let V1957 (shen.lazyderef (tl V1954) V2113) (if (= () V1957) (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1957) (do (shen.bindv V1957 () V2113) (let Result (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1957 V2113) Result))) false))) (do (shen.unbindv V1955 V2113) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V1958 (shen.lazyderef V2111 V2113) (if (cons? V1958) (let X (hd V1958) (let Hyp (tl V1958) (let NewHyps (shen.newpv V2113) (do (shen.incinfs) (bind V2112 (cons (shen.lazyderef X V2113) (shen.lazyderef NewHyps V2113)) V2113 (freeze (shen.t*-hyps Hyp NewHyps V2113 V2114))))))) false)) Case)) Case)) Case)) Case)))
51
+ (defun shen.t*-hyps (V18178 V18179 V18180 V18181) (let Case (let V17915 (shen.lazyderef V18178 V18180) (if (cons? V17915) (let V17916 (shen.lazyderef (hd V17915) V18180) (if (cons? V17916) (let V17917 (shen.lazyderef (hd V17916) V18180) (if (cons? V17917) (let V17918 (shen.lazyderef (hd V17917) V18180) (if (= cons V17918) (let V17919 (shen.lazyderef (tl V17917) V18180) (if (cons? V17919) (let X (hd V17919) (let V17920 (shen.lazyderef (tl V17919) V18180) (if (cons? V17920) (let Y (hd V17920) (let V17921 (shen.lazyderef (tl V17920) V18180) (if (= () V17921) (let V17922 (shen.lazyderef (tl V17916) V18180) (if (cons? V17922) (let V17923 (shen.lazyderef (hd V17922) V18180) (if (= : V17923) (let V17924 (shen.lazyderef (tl V17922) V18180) (if (cons? V17924) (let V17925 (shen.lazyderef (hd V17924) V18180) (if (cons? V17925) (let V17926 (shen.lazyderef (hd V17925) V18180) (if (= list V17926) (let V17927 (shen.lazyderef (tl V17925) V18180) (if (cons? V17927) (let A (hd V17927) (let V17928 (shen.lazyderef (tl V17927) V18180) (if (= () V17928) (let V17929 (shen.lazyderef (tl V17924) V18180) (if (= () V17929) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17929) (do (shen.bindv V17929 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17929 V18180) Result))) false))) (if (shen.pvar? V17928) (do (shen.bindv V17928 () V18180) (let Result (let V17930 (shen.lazyderef (tl V17924) V18180) (if (= () V17930) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17930) (do (shen.bindv V17930 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17930 V18180) Result))) false))) (do (shen.unbindv V17928 V18180) Result))) false)))) (if (shen.pvar? V17927) (let A (shen.newpv V18180) (do (shen.bindv V17927 (cons A ()) V18180) (let Result (let V17931 (shen.lazyderef (tl V17924) V18180) (if (= () V17931) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17931) (do (shen.bindv V17931 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17931 V18180) Result))) false))) (do (shen.unbindv V17927 V18180) Result)))) false))) (if (shen.pvar? V17926) (do (shen.bindv V17926 list V18180) (let Result (let V17932 (shen.lazyderef (tl V17925) V18180) (if (cons? V17932) (let A (hd V17932) (let V17933 (shen.lazyderef (tl V17932) V18180) (if (= () V17933) (let V17934 (shen.lazyderef (tl V17924) V18180) (if (= () V17934) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17934) (do (shen.bindv V17934 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17934 V18180) Result))) false))) (if (shen.pvar? V17933) (do (shen.bindv V17933 () V18180) (let Result (let V17935 (shen.lazyderef (tl V17924) V18180) (if (= () V17935) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17935) (do (shen.bindv V17935 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17935 V18180) Result))) false))) (do (shen.unbindv V17933 V18180) Result))) false)))) (if (shen.pvar? V17932) (let A (shen.newpv V18180) (do (shen.bindv V17932 (cons A ()) V18180) (let Result (let V17936 (shen.lazyderef (tl V17924) V18180) (if (= () V17936) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17936) (do (shen.bindv V17936 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17936 V18180) Result))) false))) (do (shen.unbindv V17932 V18180) Result)))) false))) (do (shen.unbindv V17926 V18180) Result))) false))) (if (shen.pvar? V17925) (let A (shen.newpv V18180) (do (shen.bindv V17925 (cons list (cons A ())) V18180) (let Result (let V17937 (shen.lazyderef (tl V17924) V18180) (if (= () V17937) (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17937) (do (shen.bindv V17937 () V18180) (let Result (let Hyp (tl V17915) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons list (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17937 V18180) Result))) false))) (do (shen.unbindv V17925 V18180) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V17938 (shen.lazyderef V18178 V18180) (if (cons? V17938) (let V17939 (shen.lazyderef (hd V17938) V18180) (if (cons? V17939) (let V17940 (shen.lazyderef (hd V17939) V18180) (if (cons? V17940) (let V17941 (shen.lazyderef (hd V17940) V18180) (if (= @p V17941) (let V17942 (shen.lazyderef (tl V17940) V18180) (if (cons? V17942) (let X (hd V17942) (let V17943 (shen.lazyderef (tl V17942) V18180) (if (cons? V17943) (let Y (hd V17943) (let V17944 (shen.lazyderef (tl V17943) V18180) (if (= () V17944) (let V17945 (shen.lazyderef (tl V17939) V18180) (if (cons? V17945) (let V17946 (shen.lazyderef (hd V17945) V18180) (if (= : V17946) (let V17947 (shen.lazyderef (tl V17945) V18180) (if (cons? V17947) (let V17948 (shen.lazyderef (hd V17947) V18180) (if (cons? V17948) (let A (hd V17948) (let V17949 (shen.lazyderef (tl V17948) V18180) (if (cons? V17949) (let V17950 (shen.lazyderef (hd V17949) V18180) (if (= * V17950) (let V17951 (shen.lazyderef (tl V17949) V18180) (if (cons? V17951) (let B (hd V17951) (let V17952 (shen.lazyderef (tl V17951) V18180) (if (= () V17952) (let V17953 (shen.lazyderef (tl V17947) V18180) (if (= () V17953) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17953) (do (shen.bindv V17953 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17953 V18180) Result))) false))) (if (shen.pvar? V17952) (do (shen.bindv V17952 () V18180) (let Result (let V17954 (shen.lazyderef (tl V17947) V18180) (if (= () V17954) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17954) (do (shen.bindv V17954 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17954 V18180) Result))) false))) (do (shen.unbindv V17952 V18180) Result))) false)))) (if (shen.pvar? V17951) (let B (shen.newpv V18180) (do (shen.bindv V17951 (cons B ()) V18180) (let Result (let V17955 (shen.lazyderef (tl V17947) V18180) (if (= () V17955) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17955) (do (shen.bindv V17955 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17955 V18180) Result))) false))) (do (shen.unbindv V17951 V18180) Result)))) false))) (if (shen.pvar? V17950) (do (shen.bindv V17950 * V18180) (let Result (let V17956 (shen.lazyderef (tl V17949) V18180) (if (cons? V17956) (let B (hd V17956) (let V17957 (shen.lazyderef (tl V17956) V18180) (if (= () V17957) (let V17958 (shen.lazyderef (tl V17947) V18180) (if (= () V17958) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17958) (do (shen.bindv V17958 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17958 V18180) Result))) false))) (if (shen.pvar? V17957) (do (shen.bindv V17957 () V18180) (let Result (let V17959 (shen.lazyderef (tl V17947) V18180) (if (= () V17959) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17959) (do (shen.bindv V17959 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17959 V18180) Result))) false))) (do (shen.unbindv V17957 V18180) Result))) false)))) (if (shen.pvar? V17956) (let B (shen.newpv V18180) (do (shen.bindv V17956 (cons B ()) V18180) (let Result (let V17960 (shen.lazyderef (tl V17947) V18180) (if (= () V17960) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17960) (do (shen.bindv V17960 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17960 V18180) Result))) false))) (do (shen.unbindv V17956 V18180) Result)))) false))) (do (shen.unbindv V17950 V18180) Result))) false))) (if (shen.pvar? V17949) (let B (shen.newpv V18180) (do (shen.bindv V17949 (cons * (cons B ())) V18180) (let Result (let V17961 (shen.lazyderef (tl V17947) V18180) (if (= () V17961) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17961) (do (shen.bindv V17961 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17961 V18180) Result))) false))) (do (shen.unbindv V17949 V18180) Result)))) false)))) (if (shen.pvar? V17948) (let A (shen.newpv V18180) (let B (shen.newpv V18180) (do (shen.bindv V17948 (cons A (cons * (cons B ()))) V18180) (let Result (let V17962 (shen.lazyderef (tl V17947) V18180) (if (= () V17962) (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17962) (do (shen.bindv V17962 () V18180) (let Result (let Hyp (tl V17938) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (shen.lazyderef B V18180) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17962 V18180) Result))) false))) (do (shen.unbindv V17948 V18180) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V17963 (shen.lazyderef V18178 V18180) (if (cons? V17963) (let V17964 (shen.lazyderef (hd V17963) V18180) (if (cons? V17964) (let V17965 (shen.lazyderef (hd V17964) V18180) (if (cons? V17965) (let V17966 (shen.lazyderef (hd V17965) V18180) (if (= @v V17966) (let V17967 (shen.lazyderef (tl V17965) V18180) (if (cons? V17967) (let X (hd V17967) (let V17968 (shen.lazyderef (tl V17967) V18180) (if (cons? V17968) (let Y (hd V17968) (let V17969 (shen.lazyderef (tl V17968) V18180) (if (= () V17969) (let V17970 (shen.lazyderef (tl V17964) V18180) (if (cons? V17970) (let V17971 (shen.lazyderef (hd V17970) V18180) (if (= : V17971) (let V17972 (shen.lazyderef (tl V17970) V18180) (if (cons? V17972) (let V17973 (shen.lazyderef (hd V17972) V18180) (if (cons? V17973) (let V17974 (shen.lazyderef (hd V17973) V18180) (if (= vector V17974) (let V17975 (shen.lazyderef (tl V17973) V18180) (if (cons? V17975) (let A (hd V17975) (let V17976 (shen.lazyderef (tl V17975) V18180) (if (= () V17976) (let V17977 (shen.lazyderef (tl V17972) V18180) (if (= () V17977) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17977) (do (shen.bindv V17977 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17977 V18180) Result))) false))) (if (shen.pvar? V17976) (do (shen.bindv V17976 () V18180) (let Result (let V17978 (shen.lazyderef (tl V17972) V18180) (if (= () V17978) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17978) (do (shen.bindv V17978 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17978 V18180) Result))) false))) (do (shen.unbindv V17976 V18180) Result))) false)))) (if (shen.pvar? V17975) (let A (shen.newpv V18180) (do (shen.bindv V17975 (cons A ()) V18180) (let Result (let V17979 (shen.lazyderef (tl V17972) V18180) (if (= () V17979) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17979) (do (shen.bindv V17979 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17979 V18180) Result))) false))) (do (shen.unbindv V17975 V18180) Result)))) false))) (if (shen.pvar? V17974) (do (shen.bindv V17974 vector V18180) (let Result (let V17980 (shen.lazyderef (tl V17973) V18180) (if (cons? V17980) (let A (hd V17980) (let V17981 (shen.lazyderef (tl V17980) V18180) (if (= () V17981) (let V17982 (shen.lazyderef (tl V17972) V18180) (if (= () V17982) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17982) (do (shen.bindv V17982 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17982 V18180) Result))) false))) (if (shen.pvar? V17981) (do (shen.bindv V17981 () V18180) (let Result (let V17983 (shen.lazyderef (tl V17972) V18180) (if (= () V17983) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17983) (do (shen.bindv V17983 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17983 V18180) Result))) false))) (do (shen.unbindv V17981 V18180) Result))) false)))) (if (shen.pvar? V17980) (let A (shen.newpv V18180) (do (shen.bindv V17980 (cons A ()) V18180) (let Result (let V17984 (shen.lazyderef (tl V17972) V18180) (if (= () V17984) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17984) (do (shen.bindv V17984 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17984 V18180) Result))) false))) (do (shen.unbindv V17980 V18180) Result)))) false))) (do (shen.unbindv V17974 V18180) Result))) false))) (if (shen.pvar? V17973) (let A (shen.newpv V18180) (do (shen.bindv V17973 (cons vector (cons A ())) V18180) (let Result (let V17985 (shen.lazyderef (tl V17972) V18180) (if (= () V17985) (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17985) (do (shen.bindv V17985 () V18180) (let Result (let Hyp (tl V17963) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons (shen.lazyderef A V18180) ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons (cons vector (cons (shen.lazyderef A V18180) ())) ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17985 V18180) Result))) false))) (do (shen.unbindv V17973 V18180) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V17986 (shen.lazyderef V18178 V18180) (if (cons? V17986) (let V17987 (shen.lazyderef (hd V17986) V18180) (if (cons? V17987) (let V17988 (shen.lazyderef (hd V17987) V18180) (if (cons? V17988) (let V17989 (shen.lazyderef (hd V17988) V18180) (if (= @s V17989) (let V17990 (shen.lazyderef (tl V17988) V18180) (if (cons? V17990) (let X (hd V17990) (let V17991 (shen.lazyderef (tl V17990) V18180) (if (cons? V17991) (let Y (hd V17991) (let V17992 (shen.lazyderef (tl V17991) V18180) (if (= () V17992) (let V17993 (shen.lazyderef (tl V17987) V18180) (if (cons? V17993) (let V17994 (shen.lazyderef (hd V17993) V18180) (if (= : V17994) (let V17995 (shen.lazyderef (tl V17993) V18180) (if (cons? V17995) (let V17996 (shen.lazyderef (hd V17995) V18180) (if (= string V17996) (let V17997 (shen.lazyderef (tl V17995) V18180) (if (= () V17997) (let Hyp (tl V17986) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons string ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17997) (do (shen.bindv V17997 () V18180) (let Result (let Hyp (tl V17986) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons string ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17997 V18180) Result))) false))) (if (shen.pvar? V17996) (do (shen.bindv V17996 string V18180) (let Result (let V17998 (shen.lazyderef (tl V17995) V18180) (if (= () V17998) (let Hyp (tl V17986) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons string ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (if (shen.pvar? V17998) (do (shen.bindv V17998 () V18180) (let Result (let Hyp (tl V17986) (do (shen.incinfs) (bind V18179 (cons (cons (shen.lazyderef X V18180) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V18180) (cons : (cons string ()))) (shen.lazyderef Hyp V18180))) V18180 V18181))) (do (shen.unbindv V17998 V18180) Result))) false))) (do (shen.unbindv V17996 V18180) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V17999 (shen.lazyderef V18178 V18180) (if (cons? V17999) (let X (hd V17999) (let Hyp (tl V17999) (let NewHyps (shen.newpv V18180) (do (shen.incinfs) (bind V18179 (cons (shen.lazyderef X V18180) (shen.lazyderef NewHyps V18180)) V18180 (freeze (shen.t*-hyps Hyp NewHyps V18180 V18181))))))) false)) Case)) Case)) Case)) Case)))
52
52
 
53
- (defun shen.show (V2127 V2128 V2129 V2130) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2127 V2129)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2128 V2129) 1) (do (shen.prhush "
54
- > " (stoutput)) (do (shen.pause-for-user) (thaw V2130))))))))) (true (thaw V2130))))
53
+ (defun shen.show (V18198 V18199 V18200 V18201) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V18198 V18200)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V18199 V18200) 1) (do (shen.prhush "
54
+ > " (stoutput)) (do (shen.pause-for-user) (thaw V18201))))))))) (true (thaw V18201))))
55
55
 
56
56
  (defun shen.line () (let Infs (inferences) (shen.prhush (cn "____________________________________________________________ " (shen.app Infs (cn " inference" (shen.app (if (= 1 Infs) "" "s") "
57
57
  ?- " shen.a)) shen.a)) (stoutput))))
58
58
 
59
- (defun shen.show-p (V2131) (cond ((and (cons? V2131) (and (cons? (tl V2131)) (and (= : (hd (tl V2131))) (and (cons? (tl (tl V2131))) (= () (tl (tl (tl V2131)))))))) (shen.prhush (shen.app (hd V2131) (cn " : " (shen.app (hd (tl (tl V2131))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V2131 "" shen.r) (stoutput)))))
59
+ (defun shen.show-p (V18203) (cond ((and (cons? V18203) (and (cons? (tl V18203)) (and (= : (hd (tl V18203))) (and (cons? (tl (tl V18203))) (= () (tl (tl (tl V18203)))))))) (shen.prhush (shen.app (hd V18203) (cn " : " (shen.app (hd (tl (tl V18203))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V18203 "" shen.r) (stoutput)))))
60
60
 
61
- (defun shen.show-assumptions (V2134 V2135) (cond ((= () V2134) shen.skip) ((cons? V2134) (do (shen.prhush (shen.app V2135 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2134)) (do (nl 1) (shen.show-assumptions (tl V2134) (+ V2135 1)))))) (true (shen.f_error shen.show-assumptions))))
61
+ (defun shen.show-assumptions (V18208 V18209) (cond ((= () V18208) shen.skip) ((cons? V18208) (do (shen.prhush (shen.app V18209 ". " shen.a) (stoutput)) (do (shen.show-p (hd V18208)) (do (nl 1) (shen.show-assumptions (tl V18208) (+ V18209 1)))))) (true (shen.f_error shen.show-assumptions))))
62
62
 
63
63
  (defun shen.pause-for-user () (let Byte (read-byte (stinput)) (if (= Byte 94) (simple-error "input aborted
64
64
  ") (nl 1))))
65
65
 
66
- (defun shen.typedf? (V2136) (cons? (assoc V2136 (value shen.*signedfuncs*))))
66
+ (defun shen.typedf? (V18211) (cons? (assoc V18211 (value shen.*signedfuncs*))))
67
67
 
68
- (defun shen.sigf (V2137) (concat shen.type-signature-of- V2137))
68
+ (defun shen.sigf (V18213) (concat shen.type-signature-of- V18213))
69
69
 
70
70
  (defun shen.placeholder () (gensym &&))
71
71
 
72
- (defun shen.base (V2138 V2139 V2140 V2141) (let Case (let V1861 (shen.lazyderef V2139 V2140) (if (= number V1861) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2138 V2140)) V2140 V2141)) (if (shen.pvar? V1861) (do (shen.bindv V1861 number V2140) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2138 V2140)) V2140 V2141)) (do (shen.unbindv V1861 V2140) Result))) false))) (if (= Case false) (let Case (let V1862 (shen.lazyderef V2139 V2140) (if (= boolean V1862) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2138 V2140)) V2140 V2141)) (if (shen.pvar? V1862) (do (shen.bindv V1862 boolean V2140) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2138 V2140)) V2140 V2141)) (do (shen.unbindv V1862 V2140) Result))) false))) (if (= Case false) (let Case (let V1863 (shen.lazyderef V2139 V2140) (if (= string V1863) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2138 V2140)) V2140 V2141)) (if (shen.pvar? V1863) (do (shen.bindv V1863 string V2140) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2138 V2140)) V2140 V2141)) (do (shen.unbindv V1863 V2140) Result))) false))) (if (= Case false) (let Case (let V1864 (shen.lazyderef V2139 V2140) (if (= symbol V1864) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2138 V2140)) V2140 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2138 V2140))) V2140 V2141)))) (if (shen.pvar? V1864) (do (shen.bindv V1864 symbol V2140) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2138 V2140)) V2140 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2138 V2140))) V2140 V2141)))) (do (shen.unbindv V1864 V2140) Result))) false))) (if (= Case false) (let V1865 (shen.lazyderef V2138 V2140) (if (= () V1865) (let V1866 (shen.lazyderef V2139 V2140) (if (cons? V1866) (let V1867 (shen.lazyderef (hd V1866) V2140) (if (= list V1867) (let V1868 (shen.lazyderef (tl V1866) V2140) (if (cons? V1868) (let A (hd V1868) (let V1869 (shen.lazyderef (tl V1868) V2140) (if (= () V1869) (do (shen.incinfs) (thaw V2141)) (if (shen.pvar? V1869) (do (shen.bindv V1869 () V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1869 V2140) Result))) false)))) (if (shen.pvar? V1868) (let A (shen.newpv V2140) (do (shen.bindv V1868 (cons A ()) V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1868 V2140) Result)))) false))) (if (shen.pvar? V1867) (do (shen.bindv V1867 list V2140) (let Result (let V1870 (shen.lazyderef (tl V1866) V2140) (if (cons? V1870) (let A (hd V1870) (let V1871 (shen.lazyderef (tl V1870) V2140) (if (= () V1871) (do (shen.incinfs) (thaw V2141)) (if (shen.pvar? V1871) (do (shen.bindv V1871 () V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1871 V2140) Result))) false)))) (if (shen.pvar? V1870) (let A (shen.newpv V2140) (do (shen.bindv V1870 (cons A ()) V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1870 V2140) Result)))) false))) (do (shen.unbindv V1867 V2140) Result))) false))) (if (shen.pvar? V1866) (let A (shen.newpv V2140) (do (shen.bindv V1866 (cons list (cons A ())) V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1866 V2140) Result)))) false))) false)) Case)) Case)) Case)) Case)))
72
+ (defun shen.base (V18218 V18219 V18220 V18221) (let Case (let V17902 (shen.lazyderef V18219 V18220) (if (= number V17902) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V18218 V18220)) V18220 V18221)) (if (shen.pvar? V17902) (do (shen.bindv V17902 number V18220) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V18218 V18220)) V18220 V18221)) (do (shen.unbindv V17902 V18220) Result))) false))) (if (= Case false) (let Case (let V17903 (shen.lazyderef V18219 V18220) (if (= boolean V17903) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V18218 V18220)) V18220 V18221)) (if (shen.pvar? V17903) (do (shen.bindv V17903 boolean V18220) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V18218 V18220)) V18220 V18221)) (do (shen.unbindv V17903 V18220) Result))) false))) (if (= Case false) (let Case (let V17904 (shen.lazyderef V18219 V18220) (if (= string V17904) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V18218 V18220)) V18220 V18221)) (if (shen.pvar? V17904) (do (shen.bindv V17904 string V18220) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V18218 V18220)) V18220 V18221)) (do (shen.unbindv V17904 V18220) Result))) false))) (if (= Case false) (let Case (let V17905 (shen.lazyderef V18219 V18220) (if (= symbol V17905) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V18218 V18220)) V18220 (freeze (fwhen (not (shen.ue? (shen.lazyderef V18218 V18220))) V18220 V18221)))) (if (shen.pvar? V17905) (do (shen.bindv V17905 symbol V18220) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V18218 V18220)) V18220 (freeze (fwhen (not (shen.ue? (shen.lazyderef V18218 V18220))) V18220 V18221)))) (do (shen.unbindv V17905 V18220) Result))) false))) (if (= Case false) (let V17906 (shen.lazyderef V18218 V18220) (if (= () V17906) (let V17907 (shen.lazyderef V18219 V18220) (if (cons? V17907) (let V17908 (shen.lazyderef (hd V17907) V18220) (if (= list V17908) (let V17909 (shen.lazyderef (tl V17907) V18220) (if (cons? V17909) (let A (hd V17909) (let V17910 (shen.lazyderef (tl V17909) V18220) (if (= () V17910) (do (shen.incinfs) (thaw V18221)) (if (shen.pvar? V17910) (do (shen.bindv V17910 () V18220) (let Result (do (shen.incinfs) (thaw V18221)) (do (shen.unbindv V17910 V18220) Result))) false)))) (if (shen.pvar? V17909) (let A (shen.newpv V18220) (do (shen.bindv V17909 (cons A ()) V18220) (let Result (do (shen.incinfs) (thaw V18221)) (do (shen.unbindv V17909 V18220) Result)))) false))) (if (shen.pvar? V17908) (do (shen.bindv V17908 list V18220) (let Result (let V17911 (shen.lazyderef (tl V17907) V18220) (if (cons? V17911) (let A (hd V17911) (let V17912 (shen.lazyderef (tl V17911) V18220) (if (= () V17912) (do (shen.incinfs) (thaw V18221)) (if (shen.pvar? V17912) (do (shen.bindv V17912 () V18220) (let Result (do (shen.incinfs) (thaw V18221)) (do (shen.unbindv V17912 V18220) Result))) false)))) (if (shen.pvar? V17911) (let A (shen.newpv V18220) (do (shen.bindv V17911 (cons A ()) V18220) (let Result (do (shen.incinfs) (thaw V18221)) (do (shen.unbindv V17911 V18220) Result)))) false))) (do (shen.unbindv V17908 V18220) Result))) false))) (if (shen.pvar? V17907) (let A (shen.newpv V18220) (do (shen.bindv V17907 (cons list (cons A ())) V18220) (let Result (do (shen.incinfs) (thaw V18221)) (do (shen.unbindv V17907 V18220) Result)))) false))) false)) Case)) Case)) Case)) Case)))
73
73
 
74
- (defun shen.by_hypothesis (V2142 V2143 V2144 V2145 V2146) (let Case (let V1852 (shen.lazyderef V2144 V2145) (if (cons? V1852) (let V1853 (shen.lazyderef (hd V1852) V2145) (if (cons? V1853) (let Y (hd V1853) (let V1854 (shen.lazyderef (tl V1853) V2145) (if (cons? V1854) (let V1855 (shen.lazyderef (hd V1854) V2145) (if (= : V1855) (let V1856 (shen.lazyderef (tl V1854) V2145) (if (cons? V1856) (let B (hd V1856) (let V1857 (shen.lazyderef (tl V1856) V2145) (if (= () V1857) (do (shen.incinfs) (identical V2142 Y V2145 (freeze (unify! V2143 B V2145 V2146)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V1858 (shen.lazyderef V2144 V2145) (if (cons? V1858) (let Hyp (tl V1858) (do (shen.incinfs) (shen.by_hypothesis V2142 V2143 Hyp V2145 V2146))) false)) Case)))
74
+ (defun shen.by_hypothesis (V18227 V18228 V18229 V18230 V18231) (let Case (let V17893 (shen.lazyderef V18229 V18230) (if (cons? V17893) (let V17894 (shen.lazyderef (hd V17893) V18230) (if (cons? V17894) (let Y (hd V17894) (let V17895 (shen.lazyderef (tl V17894) V18230) (if (cons? V17895) (let V17896 (shen.lazyderef (hd V17895) V18230) (if (= : V17896) (let V17897 (shen.lazyderef (tl V17895) V18230) (if (cons? V17897) (let B (hd V17897) (let V17898 (shen.lazyderef (tl V17897) V18230) (if (= () V17898) (do (shen.incinfs) (identical V18227 Y V18230 (freeze (unify! V18228 B V18230 V18231)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V17899 (shen.lazyderef V18229 V18230) (if (cons? V17899) (let Hyp (tl V17899) (do (shen.incinfs) (shen.by_hypothesis V18227 V18228 Hyp V18230 V18231))) false)) Case)))
75
75
 
76
- (defun shen.t*-def (V2147 V2148 V2149 V2150 V2151) (let V1846 (shen.lazyderef V2147 V2150) (if (cons? V1846) (let V1847 (shen.lazyderef (hd V1846) V2150) (if (= define V1847) (let V1848 (shen.lazyderef (tl V1846) V2150) (if (cons? V1848) (let F (hd V1848) (let X (tl V1848) (let V1755 (shen.newpv V2150) (let E (shen.newpv V2150) (do (shen.incinfs) (shen.t*-defh (compile (lambda V1755 (shen.<sig+rules> V1755)) X (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
76
+ (defun shen.t*-def (V18237 V18238 V18239 V18240 V18241) (let V17887 (shen.lazyderef V18237 V18240) (if (cons? V17887) (let V17888 (shen.lazyderef (hd V17887) V18240) (if (= define V17888) (let V17889 (shen.lazyderef (tl V17887) V18240) (if (cons? V17889) (let F (hd V17889) (let X (tl V17889) (let Y (shen.newpv V18240) (let E (shen.newpv V18240) (do (shen.incinfs) (shen.t*-defh (compile (lambda Y (shen.<sig+rules> Y)) X (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
77
77
  " shen.s))) (simple-error "parse error
78
- ")))) F V2148 V2149 V2150 V2151)))))) false)) false)) false)))
78
+ ")))) F V18238 V18239 V18240 V18241)))))) false)) false)) false)))
79
79
 
80
- (defun shen.t*-defh (V2152 V2153 V2154 V2155 V2156 V2157) (let V1842 (shen.lazyderef V2152 V2156) (if (cons? V1842) (let Sig (hd V1842) (let Rules (tl V1842) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue-sig Sig) V2153 V2154 V2155 Rules V2156 V2157)))) false)))
80
+ (defun shen.t*-defh (V18248 V18249 V18250 V18251 V18252 V18253) (let V17883 (shen.lazyderef V18248 V18252) (if (cons? V17883) (let Sig (hd V17883) (let Rules (tl V17883) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue-sig Sig) V18249 V18250 V18251 Rules V18252 V18253)))) false)))
81
81
 
82
- (defun shen.t*-defhh (V2158 V2159 V2160 V2161 V2162 V2163 V2164 V2165) (do (shen.incinfs) (shen.t*-rules V2163 V2159 1 V2160 (cons (cons V2160 (cons : (cons V2159 ()))) V2162) V2164 (freeze (shen.memo V2160 V2158 V2161 V2164 V2165)))))
82
+ (defun shen.t*-defhh (V18262 V18263 V18264 V18265 V18266 V18267 V18268 V18269) (do (shen.incinfs) (shen.t*-rules V18267 V18263 1 V18264 (cons (cons V18264 (cons : (cons V18263 ()))) V18266) V18268 (freeze (shen.memo V18264 V18262 V18265 V18268 V18269)))))
83
83
 
84
- (defun shen.memo (V2166 V2167 V2168 V2169 V2170) (let Jnk (shen.newpv V2169) (do (shen.incinfs) (unify! V2168 V2167 V2169 (freeze (bind Jnk (declare (shen.lazyderef V2166 V2169) (shen.lazyderef V2168 V2169)) V2169 V2170))))))
84
+ (defun shen.memo (V18275 V18276 V18277 V18278 V18279) (let Jnk (shen.newpv V18278) (do (shen.incinfs) (unify! V18277 V18276 V18278 (freeze (bind Jnk (declare (shen.lazyderef V18275 V18278) (shen.lazyderef V18277 V18278)) V18278 V18279))))))
85
85
 
86
- (defun shen.<sig+rules> (V2171) (let Parse_shen.<signature> (shen.<signature> V2171) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<non-ll-rules> (shen.<non-ll-rules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<non-ll-rules>)) (shen.pair (hd Parse_shen.<non-ll-rules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<non-ll-rules>))) (fail))) (fail))))
86
+ (defun shen.<sig+rules> (V18281) (let Parse_shen.<signature> (shen.<signature> V18281) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<non-ll-rules> (shen.<non-ll-rules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<non-ll-rules>)) (shen.pair (hd Parse_shen.<non-ll-rules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<non-ll-rules>))) (fail))) (fail))))
87
87
 
88
- (defun shen.<non-ll-rules> (V2172) (let YaccParse (let Parse_shen.<rule> (shen.<rule> V2172) (if (not (= (fail) Parse_shen.<rule>)) (let Parse_shen.<non-ll-rules> (shen.<non-ll-rules> Parse_shen.<rule>) (if (not (= (fail) Parse_shen.<non-ll-rules>)) (shen.pair (hd Parse_shen.<non-ll-rules>) (cons (shen.hdtl Parse_shen.<rule>) (shen.hdtl Parse_shen.<non-ll-rules>))) (fail))) (fail))) (if (= YaccParse (fail)) (let Parse_shen.<rule> (shen.<rule> V2172) (if (not (= (fail) Parse_shen.<rule>)) (shen.pair (hd Parse_shen.<rule>) (cons (shen.hdtl Parse_shen.<rule>) ())) (fail))) YaccParse)))
88
+ (defun shen.<non-ll-rules> (V18283) (let YaccParse (let Parse_shen.<rule> (shen.<rule> V18283) (if (not (= (fail) Parse_shen.<rule>)) (let Parse_shen.<non-ll-rules> (shen.<non-ll-rules> Parse_shen.<rule>) (if (not (= (fail) Parse_shen.<non-ll-rules>)) (shen.pair (hd Parse_shen.<non-ll-rules>) (cons (shen.hdtl Parse_shen.<rule>) (shen.hdtl Parse_shen.<non-ll-rules>))) (fail))) (fail))) (if (= YaccParse (fail)) (let Parse_shen.<rule> (shen.<rule> V18283) (if (not (= (fail) Parse_shen.<rule>)) (shen.pair (hd Parse_shen.<rule>) (cons (shen.hdtl Parse_shen.<rule>) ())) (fail))) YaccParse)))
89
89
 
90
- (defun shen.ue (V2173) (cond ((and (cons? V2173) (and (cons? (tl V2173)) (and (= () (tl (tl V2173))) (= (hd V2173) protect)))) V2173) ((cons? V2173) (map (lambda V1756 (shen.ue V1756)) V2173)) ((variable? V2173) (concat && V2173)) (true V2173)))
90
+ (defun shen.ue (V18285) (cond ((and (cons? V18285) (and (cons? (tl V18285)) (and (= () (tl (tl V18285))) (= (hd V18285) protect)))) V18285) ((cons? V18285) (map (lambda Z (shen.ue Z)) V18285)) ((variable? V18285) (concat && V18285)) (true V18285)))
91
91
 
92
- (defun shen.ue-sig (V2174) (cond ((cons? V2174) (map (lambda V1757 (shen.ue-sig V1757)) V2174)) ((variable? V2174) (concat &&& V2174)) (true V2174)))
92
+ (defun shen.ue-sig (V18287) (cond ((cons? V18287) (map (lambda Z (shen.ue-sig Z)) V18287)) ((variable? V18287) (concat &&& V18287)) (true V18287)))
93
93
 
94
- (defun shen.ues (V2179) (cond ((shen.ue? V2179) (cons V2179 ())) ((cons? V2179) (union (shen.ues (hd V2179)) (shen.ues (tl V2179)))) (true ())))
94
+ (defun shen.ues (V18293) (cond ((shen.ue? V18293) (cons V18293 ())) ((cons? V18293) (union (shen.ues (hd V18293)) (shen.ues (tl V18293)))) (true ())))
95
95
 
96
- (defun shen.ue? (V2180) (and (symbol? V2180) (shen.ue-h? (str V2180))))
96
+ (defun shen.ue? (V18295) (and (symbol? V18295) (shen.ue-h? (str V18295))))
97
97
 
98
- (defun shen.ue-h? (V2187) (cond ((and (shen.+string? V2187) (and (= "&" (pos V2187 0)) (and (shen.+string? (tlstr V2187)) (= "&" (pos (tlstr V2187) 0))))) true) (true false)))
98
+ (defun shen.ue-h? (V18303) (cond ((and (shen.+string? V18303) (and (= "&" (pos V18303 0)) (and (shen.+string? (tlstr V18303)) (= "&" (pos (tlstr V18303) 0))))) true) (true false)))
99
99
 
100
- (defun shen.t*-rules (V2188 V2189 V2190 V2191 V2192 V2193 V2194) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V1826 (shen.lazyderef V2188 V2193) (if (= () V1826) (do (shen.incinfs) (thaw V2194)) false)) (if (= Case false) (let Case (let V1827 (shen.lazyderef V2188 V2193) (if (cons? V1827) (let Rule (hd V1827) (let Rules (tl V1827) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2189 V2192 V2193 (freeze (cut Throwcontrol V2193 (freeze (shen.t*-rules Rules V2189 (+ V2190 1) V2191 V2192 V2193 V2194)))))))) false)) (if (= Case false) (let Err (shen.newpv V2193) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2190 V2193) (cn " of " (shen.app (shen.lazyderef V2191 V2193) "" shen.a)) shen.a))) V2193 V2194))) Case)) Case)))))
100
+ (defun shen.t*-rules (V18311 V18312 V18313 V18314 V18315 V18316 V18317) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V17867 (shen.lazyderef V18311 V18316) (if (= () V17867) (do (shen.incinfs) (thaw V18317)) false)) (if (= Case false) (let Case (let V17868 (shen.lazyderef V18311 V18316) (if (cons? V17868) (let Rule (hd V17868) (let Rules (tl V17868) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V18312 V18315 V18316 (freeze (cut Throwcontrol V18316 (freeze (shen.t*-rules Rules V18312 (+ V18313 1) V18314 V18315 V18316 V18317)))))))) false)) (if (= Case false) (let Err (shen.newpv V18316) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V18313 V18316) (cn " of " (shen.app (shen.lazyderef V18314 V18316) "" shen.a)) shen.a))) V18316 V18317))) Case)) Case)))))
101
101
 
102
- (defun shen.t*-rule (V2195 V2196 V2197 V2198 V2199) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V1818 (shen.lazyderef V2195 V2198) (if (cons? V1818) (let Patterns (hd V1818) (let V1819 (shen.lazyderef (tl V1818) V2198) (if (cons? V1819) (let Action (hd V1819) (let V1820 (shen.lazyderef (tl V1819) V2198) (if (= () V1820) (let NewHyps (shen.newpv V2198) (do (shen.incinfs) (shen.newhyps (shen.placeholders Patterns) V2197 NewHyps V2198 (freeze (shen.t*-patterns Patterns V2196 NewHyps V2198 (freeze (cut Throwcontrol V2198 (freeze (shen.t*-action (shen.curry (shen.ue Action)) (shen.result-type Patterns V2196) (shen.patthyps Patterns V2196 V2197) V2198 V2199))))))))) false))) false))) false)))))
102
+ (defun shen.t*-rule (V18323 V18324 V18325 V18326 V18327) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V17859 (shen.lazyderef V18323 V18326) (if (cons? V17859) (let Patterns (hd V17859) (let V17860 (shen.lazyderef (tl V17859) V18326) (if (cons? V17860) (let Action (hd V17860) (let V17861 (shen.lazyderef (tl V17860) V18326) (if (= () V17861) (let NewHyps (shen.newpv V18326) (do (shen.incinfs) (shen.newhyps (shen.placeholders Patterns) V18325 NewHyps V18326 (freeze (shen.t*-patterns Patterns V18324 NewHyps V18326 (freeze (cut Throwcontrol V18326 (freeze (shen.t*-action (shen.curry (shen.ue Action)) (shen.result-type Patterns V18324) (shen.patthyps Patterns V18324 V18325) V18326 V18327))))))))) false))) false))) false)))))
103
103
 
104
- (defun shen.placeholders (V2204) (cond ((shen.ue? V2204) (cons V2204 ())) ((cons? V2204) (union (shen.placeholders (hd V2204)) (shen.placeholders (tl V2204)))) (true ())))
104
+ (defun shen.placeholders (V18333) (cond ((shen.ue? V18333) (cons V18333 ())) ((cons? V18333) (union (shen.placeholders (hd V18333)) (shen.placeholders (tl V18333)))) (true ())))
105
105
 
106
- (defun shen.newhyps (V2205 V2206 V2207 V2208 V2209) (let Case (let V1805 (shen.lazyderef V2205 V2208) (if (= () V1805) (do (shen.incinfs) (unify! V2207 V2206 V2208 V2209)) false)) (if (= Case false) (let V1806 (shen.lazyderef V2205 V2208) (if (cons? V1806) (let V1801 (hd V1806) (let Vs (tl V1806) (let V1807 (shen.lazyderef V2207 V2208) (if (cons? V1807) (let V1808 (shen.lazyderef (hd V1807) V2208) (if (cons? V1808) (let V (hd V1808) (let V1809 (shen.lazyderef (tl V1808) V2208) (if (cons? V1809) (let V1810 (shen.lazyderef (hd V1809) V2208) (if (= : V1810) (let V1811 (shen.lazyderef (tl V1809) V2208) (if (cons? V1811) (let A (hd V1811) (let V1812 (shen.lazyderef (tl V1811) V2208) (if (= () V1812) (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (if (shen.pvar? V1812) (do (shen.bindv V1812 () V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1812 V2208) Result))) false)))) (if (shen.pvar? V1811) (let A (shen.newpv V2208) (do (shen.bindv V1811 (cons A ()) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1811 V2208) Result)))) false))) (if (shen.pvar? V1810) (do (shen.bindv V1810 : V2208) (let Result (let V1813 (shen.lazyderef (tl V1809) V2208) (if (cons? V1813) (let A (hd V1813) (let V1814 (shen.lazyderef (tl V1813) V2208) (if (= () V1814) (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (if (shen.pvar? V1814) (do (shen.bindv V1814 () V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1814 V2208) Result))) false)))) (if (shen.pvar? V1813) (let A (shen.newpv V2208) (do (shen.bindv V1813 (cons A ()) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1813 V2208) Result)))) false))) (do (shen.unbindv V1810 V2208) Result))) false))) (if (shen.pvar? V1809) (let A (shen.newpv V2208) (do (shen.bindv V1809 (cons : (cons A ())) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1809 V2208) Result)))) false)))) (if (shen.pvar? V1808) (let V (shen.newpv V2208) (let A (shen.newpv V2208) (do (shen.bindv V1808 (cons V (cons : (cons A ()))) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1808 V2208) Result))))) false))) (if (shen.pvar? V1807) (let V (shen.newpv V2208) (let A (shen.newpv V2208) (let NewHyp (shen.newpv V2208) (do (shen.bindv V1807 (cons (cons V (cons : (cons A ()))) NewHyp) V2208) (let Result (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209)))) (do (shen.unbindv V1807 V2208) Result)))))) false))))) false)) Case)))
106
+ (defun shen.newhyps (V18339 V18340 V18341 V18342 V18343) (let Case (let V17846 (shen.lazyderef V18339 V18342) (if (= () V17846) (do (shen.incinfs) (unify! V18341 V18340 V18342 V18343)) false)) (if (= Case false) (let V17847 (shen.lazyderef V18339 V18342) (if (cons? V17847) (let V17842 (hd V17847) (let Vs (tl V17847) (let V17848 (shen.lazyderef V18341 V18342) (if (cons? V17848) (let V17849 (shen.lazyderef (hd V17848) V18342) (if (cons? V17849) (let V (hd V17849) (let V17850 (shen.lazyderef (tl V17849) V18342) (if (cons? V17850) (let V17851 (shen.lazyderef (hd V17850) V18342) (if (= : V17851) (let V17852 (shen.lazyderef (tl V17850) V18342) (if (cons? V17852) (let A (hd V17852) (let V17853 (shen.lazyderef (tl V17852) V18342) (if (= () V17853) (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (if (shen.pvar? V17853) (do (shen.bindv V17853 () V18342) (let Result (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (do (shen.unbindv V17853 V18342) Result))) false)))) (if (shen.pvar? V17852) (let A (shen.newpv V18342) (do (shen.bindv V17852 (cons A ()) V18342) (let Result (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (do (shen.unbindv V17852 V18342) Result)))) false))) (if (shen.pvar? V17851) (do (shen.bindv V17851 : V18342) (let Result (let V17854 (shen.lazyderef (tl V17850) V18342) (if (cons? V17854) (let A (hd V17854) (let V17855 (shen.lazyderef (tl V17854) V18342) (if (= () V17855) (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (if (shen.pvar? V17855) (do (shen.bindv V17855 () V18342) (let Result (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (do (shen.unbindv V17855 V18342) Result))) false)))) (if (shen.pvar? V17854) (let A (shen.newpv V18342) (do (shen.bindv V17854 (cons A ()) V18342) (let Result (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (do (shen.unbindv V17854 V18342) Result)))) false))) (do (shen.unbindv V17851 V18342) Result))) false))) (if (shen.pvar? V17850) (let A (shen.newpv V18342) (do (shen.bindv V17850 (cons : (cons A ())) V18342) (let Result (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (do (shen.unbindv V17850 V18342) Result)))) false)))) (if (shen.pvar? V17849) (let V (shen.newpv V18342) (let A (shen.newpv V18342) (do (shen.bindv V17849 (cons V (cons : (cons A ()))) V18342) (let Result (let NewHyp (tl V17848) (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343))))) (do (shen.unbindv V17849 V18342) Result))))) false))) (if (shen.pvar? V17848) (let V (shen.newpv V18342) (let A (shen.newpv V18342) (let NewHyp (shen.newpv V18342) (do (shen.bindv V17848 (cons (cons V (cons : (cons A ()))) NewHyp) V18342) (let Result (do (shen.incinfs) (unify! V V17842 V18342 (freeze (shen.newhyps Vs V18340 NewHyp V18342 V18343)))) (do (shen.unbindv V17848 V18342) Result)))))) false))))) false)) Case)))
107
107
 
108
- (defun shen.patthyps (V2212 V2213 V2214) (cond ((= () V2212) V2214) ((and (cons? V2212) (and (cons? V2213) (and (cons? (tl V2213)) (and (= --> (hd (tl V2213))) (and (cons? (tl (tl V2213))) (= () (tl (tl (tl V2213))))))))) (adjoin (cons (hd V2212) (cons : (cons (hd V2213) ()))) (shen.patthyps (tl V2212) (hd (tl (tl V2213))) V2214))) (true (shen.f_error shen.patthyps))))
108
+ (defun shen.patthyps (V18349 V18350 V18351) (cond ((= () V18349) V18351) ((and (cons? V18349) (and (cons? V18350) (and (cons? (tl V18350)) (and (= --> (hd (tl V18350))) (and (cons? (tl (tl V18350))) (= () (tl (tl (tl V18350))))))))) (adjoin (cons (hd V18349) (cons : (cons (hd V18350) ()))) (shen.patthyps (tl V18349) (hd (tl (tl V18350))) V18351))) (true (shen.f_error shen.patthyps))))
109
109
 
110
- (defun shen.result-type (V2219 V2220) (cond ((and (= () V2219) (and (cons? V2220) (and (= --> (hd V2220)) (and (cons? (tl V2220)) (= () (tl (tl V2220))))))) (hd (tl V2220))) ((= () V2219) V2220) ((and (cons? V2219) (and (cons? V2220) (and (cons? (tl V2220)) (and (= --> (hd (tl V2220))) (and (cons? (tl (tl V2220))) (= () (tl (tl (tl V2220))))))))) (shen.result-type (tl V2219) (hd (tl (tl V2220))))) (true (shen.f_error shen.result-type))))
110
+ (defun shen.result-type (V18358 V18359) (cond ((and (= () V18358) (and (cons? V18359) (and (= --> (hd V18359)) (and (cons? (tl V18359)) (= () (tl (tl V18359))))))) (hd (tl V18359))) ((= () V18358) V18359) ((and (cons? V18358) (and (cons? V18359) (and (cons? (tl V18359)) (and (= --> (hd (tl V18359))) (and (cons? (tl (tl V18359))) (= () (tl (tl (tl V18359))))))))) (shen.result-type (tl V18358) (hd (tl (tl V18359))))) (true (shen.f_error shen.result-type))))
111
111
 
112
- (defun shen.t*-patterns (V2221 V2222 V2223 V2224 V2225) (let Case (let V1793 (shen.lazyderef V2221 V2224) (if (= () V1793) (do (shen.incinfs) (thaw V2225)) false)) (if (= Case false) (let V1794 (shen.lazyderef V2221 V2224) (if (cons? V1794) (let Pattern (hd V1794) (let Patterns (tl V1794) (let V1795 (shen.lazyderef V2222 V2224) (if (cons? V1795) (let A (hd V1795) (let V1796 (shen.lazyderef (tl V1795) V2224) (if (cons? V1796) (let V1797 (shen.lazyderef (hd V1796) V2224) (if (= --> V1797) (let V1798 (shen.lazyderef (tl V1796) V2224) (if (cons? V1798) (let B (hd V1798) (let V1799 (shen.lazyderef (tl V1798) V2224) (if (= () V1799) (do (shen.incinfs) (shen.t* (cons Pattern (cons : (cons A ()))) V2223 V2224 (freeze (shen.t*-patterns Patterns B V2223 V2224 V2225)))) false))) false)) false)) false))) false)))) false)) Case)))
112
+ (defun shen.t*-patterns (V18365 V18366 V18367 V18368 V18369) (let Case (let V17834 (shen.lazyderef V18365 V18368) (if (= () V17834) (do (shen.incinfs) (thaw V18369)) false)) (if (= Case false) (let V17835 (shen.lazyderef V18365 V18368) (if (cons? V17835) (let Pattern (hd V17835) (let Patterns (tl V17835) (let V17836 (shen.lazyderef V18366 V18368) (if (cons? V17836) (let A (hd V17836) (let V17837 (shen.lazyderef (tl V17836) V18368) (if (cons? V17837) (let V17838 (shen.lazyderef (hd V17837) V18368) (if (= --> V17838) (let V17839 (shen.lazyderef (tl V17837) V18368) (if (cons? V17839) (let B (hd V17839) (let V17840 (shen.lazyderef (tl V17839) V18368) (if (= () V17840) (do (shen.incinfs) (shen.t* (cons Pattern (cons : (cons A ()))) V18367 V18368 (freeze (shen.t*-patterns Patterns B V18367 V18368 V18369)))) false))) false)) false)) false))) false)))) false)) Case)))
113
113
 
114
- (defun shen.t*-action (V2226 V2227 V2228 V2229 V2230) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V1770 (shen.lazyderef V2226 V2229) (if (cons? V1770) (let V1771 (shen.lazyderef (hd V1770) V2229) (if (= where V1771) (let V1772 (shen.lazyderef (tl V1770) V2229) (if (cons? V1772) (let P (hd V1772) (let V1773 (shen.lazyderef (tl V1772) V2229) (if (cons? V1773) (let Action (hd V1773) (let V1774 (shen.lazyderef (tl V1773) V2229) (if (= () V1774) (do (shen.incinfs) (cut Throwcontrol V2229 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2228 V2229 (freeze (cut Throwcontrol V2229 (freeze (shen.t*-action Action V2227 (cons (cons P (cons : (cons verified ()))) V2228) V2229 V2230)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1775 (shen.lazyderef V2226 V2229) (if (cons? V1775) (let V1776 (shen.lazyderef (hd V1775) V2229) (if (= shen.choicepoint! V1776) (let V1777 (shen.lazyderef (tl V1775) V2229) (if (cons? V1777) (let V1778 (shen.lazyderef (hd V1777) V2229) (if (cons? V1778) (let V1779 (shen.lazyderef (hd V1778) V2229) (if (cons? V1779) (let V1780 (shen.lazyderef (hd V1779) V2229) (if (= fail-if V1780) (let V1781 (shen.lazyderef (tl V1779) V2229) (if (cons? V1781) (let F (hd V1781) (let V1782 (shen.lazyderef (tl V1781) V2229) (if (= () V1782) (let V1783 (shen.lazyderef (tl V1778) V2229) (if (cons? V1783) (let Action (hd V1783) (let V1784 (shen.lazyderef (tl V1783) V2229) (if (= () V1784) (let V1785 (shen.lazyderef (tl V1777) V2229) (if (= () V1785) (do (shen.incinfs) (cut Throwcontrol V2229 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2227 V2228 V2229 V2230)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1786 (shen.lazyderef V2226 V2229) (if (cons? V1786) (let V1787 (shen.lazyderef (hd V1786) V2229) (if (= shen.choicepoint! V1787) (let V1788 (shen.lazyderef (tl V1786) V2229) (if (cons? V1788) (let Action (hd V1788) (let V1789 (shen.lazyderef (tl V1788) V2229) (if (= () V1789) (do (shen.incinfs) (cut Throwcontrol V2229 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2227 V2228 V2229 V2230)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2226 (cons : (cons V2227 ()))) V2228 V2229 V2230)) Case)) Case)) Case)))))
114
+ (defun shen.t*-action (V18375 V18376 V18377 V18378 V18379) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V17811 (shen.lazyderef V18375 V18378) (if (cons? V17811) (let V17812 (shen.lazyderef (hd V17811) V18378) (if (= where V17812) (let V17813 (shen.lazyderef (tl V17811) V18378) (if (cons? V17813) (let P (hd V17813) (let V17814 (shen.lazyderef (tl V17813) V18378) (if (cons? V17814) (let Action (hd V17814) (let V17815 (shen.lazyderef (tl V17814) V18378) (if (= () V17815) (do (shen.incinfs) (cut Throwcontrol V18378 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V18377 V18378 (freeze (cut Throwcontrol V18378 (freeze (shen.t*-action Action V18376 (cons (cons P (cons : (cons verified ()))) V18377) V18378 V18379)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V17816 (shen.lazyderef V18375 V18378) (if (cons? V17816) (let V17817 (shen.lazyderef (hd V17816) V18378) (if (= shen.choicepoint! V17817) (let V17818 (shen.lazyderef (tl V17816) V18378) (if (cons? V17818) (let V17819 (shen.lazyderef (hd V17818) V18378) (if (cons? V17819) (let V17820 (shen.lazyderef (hd V17819) V18378) (if (cons? V17820) (let V17821 (shen.lazyderef (hd V17820) V18378) (if (= fail-if V17821) (let V17822 (shen.lazyderef (tl V17820) V18378) (if (cons? V17822) (let F (hd V17822) (let V17823 (shen.lazyderef (tl V17822) V18378) (if (= () V17823) (let V17824 (shen.lazyderef (tl V17819) V18378) (if (cons? V17824) (let Action (hd V17824) (let V17825 (shen.lazyderef (tl V17824) V18378) (if (= () V17825) (let V17826 (shen.lazyderef (tl V17818) V18378) (if (= () V17826) (do (shen.incinfs) (cut Throwcontrol V18378 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V18376 V18377 V18378 V18379)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V17827 (shen.lazyderef V18375 V18378) (if (cons? V17827) (let V17828 (shen.lazyderef (hd V17827) V18378) (if (= shen.choicepoint! V17828) (let V17829 (shen.lazyderef (tl V17827) V18378) (if (cons? V17829) (let Action (hd V17829) (let V17830 (shen.lazyderef (tl V17829) V18378) (if (= () V17830) (do (shen.incinfs) (cut Throwcontrol V18378 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V18376 V18377 V18378 V18379)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V18375 (cons : (cons V18376 ()))) V18377 V18378 V18379)) Case)) Case)) Case)))))
115
115
 
116
- (defun findall (V2231 V2232 V2233 V2234 V2235) (let B (shen.newpv V2234) (let A (shen.newpv V2234) (do (shen.incinfs) (bind A (gensym shen.a) V2234 (freeze (bind B (set (shen.lazyderef A V2234) ()) V2234 (freeze (shen.findallhelp V2231 V2232 V2233 A V2234 V2235)))))))))
116
+ (defun findall (V18385 V18386 V18387 V18388 V18389) (let B (shen.newpv V18388) (let A (shen.newpv V18388) (do (shen.incinfs) (bind A (gensym shen.a) V18388 (freeze (bind B (set (shen.lazyderef A V18388) ()) V18388 (freeze (shen.findallhelp V18385 V18386 V18387 A V18388 V18389)))))))))
117
117
 
118
- (defun shen.findallhelp (V2236 V2237 V2238 V2239 V2240 V2241) (let Case (do (shen.incinfs) (call V2237 V2240 (freeze (shen.remember V2239 V2236 V2240 (freeze (fwhen false V2240 V2241)))))) (if (= Case false) (do (shen.incinfs) (bind V2238 (value (shen.lazyderef V2239 V2240)) V2240 V2241)) Case)))
118
+ (defun shen.findallhelp (V18396 V18397 V18398 V18399 V18400 V18401) (let Case (do (shen.incinfs) (call V18397 V18400 (freeze (shen.remember V18399 V18396 V18400 (freeze (fwhen false V18400 V18401)))))) (if (= Case false) (do (shen.incinfs) (bind V18398 (value (shen.lazyderef V18399 V18400)) V18400 V18401)) Case)))
119
119
 
120
- (defun shen.remember (V2242 V2243 V2244 V2245) (let B (shen.newpv V2244) (do (shen.incinfs) (bind B (set (shen.deref V2242 V2244) (cons (shen.deref V2243 V2244) (value (shen.deref V2242 V2244)))) V2244 V2245))))
120
+ (defun shen.remember (V18406 V18407 V18408 V18409) (let B (shen.newpv V18408) (do (shen.incinfs) (bind B (set (shen.deref V18406 V18408) (cons (shen.deref V18407 V18408) (value (shen.deref V18406 V18408)))) V18408 V18409))))
121
121
 
122
122
 
123
123