shen-ruby 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,115 +47,117 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun shen.typecheck (V2829 V2830) (let Curry (shen.curry V2829) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2830)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
50
+ "(defun shen.typecheck (V2831 V2832) (let Curry (shen.curry V2831) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2832)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
51
51
 
52
- (defun shen.curry (V2831) (cond ((and (cons? V2831) (shen.special? (hd V2831))) (cons (hd V2831) (map shen.curry (tl V2831)))) ((and (cons? V2831) (and (cons? (tl V2831)) (shen.extraspecial? (hd V2831)))) V2831) ((and (cons? V2831) (and (cons? (tl V2831)) (cons? (tl (tl V2831))))) (shen.curry (cons (cons (hd V2831) (cons (hd (tl V2831)) ())) (tl (tl V2831))))) ((and (cons? V2831) (and (cons? (tl V2831)) (= () (tl (tl V2831))))) (cons (shen.curry (hd V2831)) (cons (shen.curry (hd (tl V2831))) ()))) (true V2831)))
52
+ (defun shen.curry (V2833) (cond ((and (cons? V2833) (shen.special? (hd V2833))) (cons (hd V2833) (map shen.curry (tl V2833)))) ((and (cons? V2833) (and (cons? (tl V2833)) (shen.extraspecial? (hd V2833)))) V2833) ((and (cons? V2833) (and (= type (hd V2833)) (and (cons? (tl V2833)) (and (cons? (tl (tl V2833))) (= () (tl (tl (tl V2833)))))))) (cons type (cons (shen.curry (hd (tl V2833))) (tl (tl V2833))))) ((and (cons? V2833) (and (cons? (tl V2833)) (cons? (tl (tl V2833))))) (shen.curry (cons (cons (hd V2833) (cons (hd (tl V2833)) ())) (tl (tl V2833))))) ((and (cons? V2833) (and (cons? (tl V2833)) (= () (tl (tl V2833))))) (cons (shen.curry (hd V2833)) (cons (shen.curry (hd (tl V2833))) ()))) (true V2833)))
53
53
 
54
- (defun shen.special? (V2832) (element? V2832 (value shen.*special*)))
54
+ (defun shen.special? (V2834) (element? V2834 (value shen.*special*)))
55
55
 
56
- (defun shen.extraspecial? (V2833) (element? V2833 (value shen.*extraspecial*)))
56
+ (defun shen.extraspecial? (V2835) (element? V2835 (value shen.*extraspecial*)))
57
57
 
58
- (defun shen.t* (V2834 V2835 V2836 V2837) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2836) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2836 (freeze (bind Error (shen.errormaxinfs) V2836 V2837))))) (if (= Case false) (let Case (let V2823 (shen.lazyderef V2834 V2836) (if (= fail V2823) (do (shen.incinfs) (cut Throwcontrol V2836 (freeze (shen.prolog-failure V2836 V2837)))) false)) (if (= Case false) (let Case (let V2824 (shen.lazyderef V2834 V2836) (if (cons? V2824) (let X (hd V2824) (let V2825 (shen.lazyderef (tl V2824) V2836) (if (cons? V2825) (let V2826 (shen.lazyderef (hd V2825) V2836) (if (= : V2826) (let V2827 (shen.lazyderef (tl V2825) V2836) (if (cons? V2827) (let A (hd V2827) (let V2828 (shen.lazyderef (tl V2827) V2836) (if (= () V2828) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2836 (freeze (cut Throwcontrol V2836 (freeze (shen.th* X A V2835 V2836 V2837)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2836) (do (shen.incinfs) (shen.show V2834 V2835 V2836 (freeze (bind Datatypes (value shen.*datatypes*) V2836 (freeze (shen.udefs* V2834 V2835 Datatypes V2836 V2837))))))) Case)) Case)) Case)))))
58
+ (defun shen.t* (V2836 V2837 V2838 V2839) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2838) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2838 (freeze (bind Error (shen.errormaxinfs) V2838 V2839))))) (if (= Case false) (let Case (let V2825 (shen.lazyderef V2836 V2838) (if (= fail V2825) (do (shen.incinfs) (cut Throwcontrol V2838 (freeze (shen.prolog-failure V2838 V2839)))) false)) (if (= Case false) (let Case (let V2826 (shen.lazyderef V2836 V2838) (if (cons? V2826) (let X (hd V2826) (let V2827 (shen.lazyderef (tl V2826) V2838) (if (cons? V2827) (let V2828 (shen.lazyderef (hd V2827) V2838) (if (= : V2828) (let V2829 (shen.lazyderef (tl V2827) V2838) (if (cons? V2829) (let A (hd V2829) (let V2830 (shen.lazyderef (tl V2829) V2838) (if (= () V2830) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2838 (freeze (cut Throwcontrol V2838 (freeze (shen.th* X A V2837 V2838 V2839)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2838) (do (shen.incinfs) (shen.show V2836 V2837 V2838 (freeze (bind Datatypes (value shen.*datatypes*) V2838 (freeze (shen.udefs* V2836 V2837 Datatypes V2838 V2839))))))) Case)) Case)) Case)))))
59
59
 
60
60
  (defun shen.type-theory-enabled? () (value shen.*shen-type-theory-enabled?*))
61
61
 
62
- (defun enable-type-theory (V2842) (cond ((= + V2842) (set shen.*shen-type-theory-enabled?* true)) ((= - V2842) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
62
+ (defun enable-type-theory (V2844) (cond ((= + V2844) (set shen.*shen-type-theory-enabled?* true)) ((= - V2844) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
63
63
  "))))
64
64
 
65
- (defun shen.prolog-failure (V2851 V2852) false)
65
+ (defun shen.prolog-failure (V2853 V2854) false)
66
66
 
67
67
  (defun shen.maxinfexceeded? () (> (inferences) (value shen.*maxinferences*)))
68
68
 
69
69
  (defun shen.errormaxinfs () (simple-error "maximum inferences exceeded~%"))
70
70
 
71
- (defun shen.udefs* (V2853 V2854 V2855 V2856 V2857) (let Case (let V2819 (shen.lazyderef V2855 V2856) (if (cons? V2819) (let D (hd V2819) (do (shen.incinfs) (call (cons D (cons V2853 (cons V2854 ()))) V2856 V2857))) false)) (if (= Case false) (let V2820 (shen.lazyderef V2855 V2856) (if (cons? V2820) (let Ds (tl V2820) (do (shen.incinfs) (shen.udefs* V2853 V2854 Ds V2856 V2857))) false)) Case)))
71
+ (defun shen.udefs* (V2855 V2856 V2857 V2858 V2859) (let Case (let V2821 (shen.lazyderef V2857 V2858) (if (cons? V2821) (let D (hd V2821) (do (shen.incinfs) (call (cons D (cons V2855 (cons V2856 ()))) V2858 V2859))) false)) (if (= Case false) (let V2822 (shen.lazyderef V2857 V2858) (if (cons? V2822) (let Ds (tl V2822) (do (shen.incinfs) (shen.udefs* V2855 V2856 Ds V2858 V2859))) false)) Case)))
72
72
 
73
- (defun shen.th* (V2858 V2859 V2860 V2861 V2862) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2858 (cons : (cons V2859 ()))) V2860 V2861 (freeze (fwhen false V2861 V2862)))) (if (= Case false) (let Case (let F (shen.newpv V2861) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2858 V2861)) V2861 (freeze (bind F (shen.sigf (shen.lazyderef V2858 V2861)) V2861 (freeze (call (cons F (cons V2859 ())) V2861 V2862))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2858 V2859 V2861 V2862)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2858 V2859 V2860 V2861 V2862)) (if (= Case false) (let Case (let V2697 (shen.lazyderef V2858 V2861) (if (cons? V2697) (let F (hd V2697) (let V2698 (shen.lazyderef (tl V2697) V2861) (if (= () V2698) (do (shen.incinfs) (shen.th* F (cons --> (cons V2859 ())) V2860 V2861 V2862)) false))) false)) (if (= Case false) (let Case (let V2699 (shen.lazyderef V2858 V2861) (if (cons? V2699) (let F (hd V2699) (let V2700 (shen.lazyderef (tl V2699) V2861) (if (cons? V2700) (let X (hd V2700) (let V2701 (shen.lazyderef (tl V2700) V2861) (if (= () V2701) (let B (shen.newpv V2861) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2859 ()))) V2860 V2861 (freeze (shen.th* X B V2860 V2861 V2862))))) false))) false))) false)) (if (= Case false) (let Case (let V2702 (shen.lazyderef V2858 V2861) (if (cons? V2702) (let V2703 (shen.lazyderef (hd V2702) V2861) (if (= cons V2703) (let V2704 (shen.lazyderef (tl V2702) V2861) (if (cons? V2704) (let X (hd V2704) (let V2705 (shen.lazyderef (tl V2704) V2861) (if (cons? V2705) (let Y (hd V2705) (let V2706 (shen.lazyderef (tl V2705) V2861) (if (= () V2706) (let V2707 (shen.lazyderef V2859 V2861) (if (cons? V2707) (let V2708 (shen.lazyderef (hd V2707) V2861) (if (= list V2708) (let V2709 (shen.lazyderef (tl V2707) V2861) (if (cons? V2709) (let A (hd V2709) (let V2710 (shen.lazyderef (tl V2709) V2861) (if (= () V2710) (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (if (shen.pvar? V2710) (do (shen.bindv V2710 () V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2710 V2861) Result))) false)))) (if (shen.pvar? V2709) (let A (shen.newpv V2861) (do (shen.bindv V2709 (cons A ()) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2709 V2861) Result)))) false))) (if (shen.pvar? V2708) (do (shen.bindv V2708 list V2861) (let Result (let V2711 (shen.lazyderef (tl V2707) V2861) (if (cons? V2711) (let A (hd V2711) (let V2712 (shen.lazyderef (tl V2711) V2861) (if (= () V2712) (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (if (shen.pvar? V2712) (do (shen.bindv V2712 () V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2712 V2861) Result))) false)))) (if (shen.pvar? V2711) (let A (shen.newpv V2861) (do (shen.bindv V2711 (cons A ()) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2711 V2861) Result)))) false))) (do (shen.unbindv V2708 V2861) Result))) false))) (if (shen.pvar? V2707) (let A (shen.newpv V2861) (do (shen.bindv V2707 (cons list (cons A ())) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons list (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2707 V2861) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2713 (shen.lazyderef V2858 V2861) (if (cons? V2713) (let V2714 (shen.lazyderef (hd V2713) V2861) (if (= @p V2714) (let V2715 (shen.lazyderef (tl V2713) V2861) (if (cons? V2715) (let X (hd V2715) (let V2716 (shen.lazyderef (tl V2715) V2861) (if (cons? V2716) (let Y (hd V2716) (let V2717 (shen.lazyderef (tl V2716) V2861) (if (= () V2717) (let V2718 (shen.lazyderef V2859 V2861) (if (cons? V2718) (let A (hd V2718) (let V2719 (shen.lazyderef (tl V2718) V2861) (if (cons? V2719) (let V2720 (shen.lazyderef (hd V2719) V2861) (if (= * V2720) (let V2721 (shen.lazyderef (tl V2719) V2861) (if (cons? V2721) (let B (hd V2721) (let V2722 (shen.lazyderef (tl V2721) V2861) (if (= () V2722) (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (if (shen.pvar? V2722) (do (shen.bindv V2722 () V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (do (shen.unbindv V2722 V2861) Result))) false)))) (if (shen.pvar? V2721) (let B (shen.newpv V2861) (do (shen.bindv V2721 (cons B ()) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (do (shen.unbindv V2721 V2861) Result)))) false))) (if (shen.pvar? V2720) (do (shen.bindv V2720 * V2861) (let Result (let V2723 (shen.lazyderef (tl V2719) V2861) (if (cons? V2723) (let B (hd V2723) (let V2724 (shen.lazyderef (tl V2723) V2861) (if (= () V2724) (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (if (shen.pvar? V2724) (do (shen.bindv V2724 () V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (do (shen.unbindv V2724 V2861) Result))) false)))) (if (shen.pvar? V2723) (let B (shen.newpv V2861) (do (shen.bindv V2723 (cons B ()) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (do (shen.unbindv V2723 V2861) Result)))) false))) (do (shen.unbindv V2720 V2861) Result))) false))) (if (shen.pvar? V2719) (let B (shen.newpv V2861) (do (shen.bindv V2719 (cons * (cons B ())) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (do (shen.unbindv V2719 V2861) Result)))) false)))) (if (shen.pvar? V2718) (let A (shen.newpv V2861) (let B (shen.newpv V2861) (do (shen.bindv V2718 (cons A (cons * (cons B ()))) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y B V2860 V2861 V2862)))) (do (shen.unbindv V2718 V2861) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2725 (shen.lazyderef V2858 V2861) (if (cons? V2725) (let V2726 (shen.lazyderef (hd V2725) V2861) (if (= @v V2726) (let V2727 (shen.lazyderef (tl V2725) V2861) (if (cons? V2727) (let X (hd V2727) (let V2728 (shen.lazyderef (tl V2727) V2861) (if (cons? V2728) (let Y (hd V2728) (let V2729 (shen.lazyderef (tl V2728) V2861) (if (= () V2729) (let V2730 (shen.lazyderef V2859 V2861) (if (cons? V2730) (let V2731 (shen.lazyderef (hd V2730) V2861) (if (= vector V2731) (let V2732 (shen.lazyderef (tl V2730) V2861) (if (cons? V2732) (let A (hd V2732) (let V2733 (shen.lazyderef (tl V2732) V2861) (if (= () V2733) (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (if (shen.pvar? V2733) (do (shen.bindv V2733 () V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2733 V2861) Result))) false)))) (if (shen.pvar? V2732) (let A (shen.newpv V2861) (do (shen.bindv V2732 (cons A ()) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2732 V2861) Result)))) false))) (if (shen.pvar? V2731) (do (shen.bindv V2731 vector V2861) (let Result (let V2734 (shen.lazyderef (tl V2730) V2861) (if (cons? V2734) (let A (hd V2734) (let V2735 (shen.lazyderef (tl V2734) V2861) (if (= () V2735) (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (if (shen.pvar? V2735) (do (shen.bindv V2735 () V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2735 V2861) Result))) false)))) (if (shen.pvar? V2734) (let A (shen.newpv V2861) (do (shen.bindv V2734 (cons A ()) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2734 V2861) Result)))) false))) (do (shen.unbindv V2731 V2861) Result))) false))) (if (shen.pvar? V2730) (let A (shen.newpv V2861) (do (shen.bindv V2730 (cons vector (cons A ())) V2861) (let Result (do (shen.incinfs) (shen.th* X A V2860 V2861 (freeze (shen.th* Y (cons vector (cons A ())) V2860 V2861 V2862)))) (do (shen.unbindv V2730 V2861) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2736 (shen.lazyderef V2858 V2861) (if (cons? V2736) (let V2737 (shen.lazyderef (hd V2736) V2861) (if (= @s V2737) (let V2738 (shen.lazyderef (tl V2736) V2861) (if (cons? V2738) (let X (hd V2738) (let V2739 (shen.lazyderef (tl V2738) V2861) (if (cons? V2739) (let Y (hd V2739) (let V2740 (shen.lazyderef (tl V2739) V2861) (if (= () V2740) (let V2741 (shen.lazyderef V2859 V2861) (if (= string V2741) (do (shen.incinfs) (shen.th* X string V2860 V2861 (freeze (shen.th* Y string V2860 V2861 V2862)))) (if (shen.pvar? V2741) (do (shen.bindv V2741 string V2861) (let Result (do (shen.incinfs) (shen.th* X string V2860 V2861 (freeze (shen.th* Y string V2860 V2861 V2862)))) (do (shen.unbindv V2741 V2861) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2742 (shen.lazyderef V2858 V2861) (if (cons? V2742) (let V2743 (shen.lazyderef (hd V2742) V2861) (if (= lambda V2743) (let V2744 (shen.lazyderef (tl V2742) V2861) (if (cons? V2744) (let X (hd V2744) (let V2745 (shen.lazyderef (tl V2744) V2861) (if (cons? V2745) (let Y (hd V2745) (let V2746 (shen.lazyderef (tl V2745) V2861) (if (= () V2746) (let V2747 (shen.lazyderef V2859 V2861) (if (cons? V2747) (let A (hd V2747) (let V2748 (shen.lazyderef (tl V2747) V2861) (if (cons? V2748) (let V2749 (shen.lazyderef (hd V2748) V2861) (if (= --> V2749) (let V2750 (shen.lazyderef (tl V2748) V2861) (if (cons? V2750) (let B (hd V2750) (let V2751 (shen.lazyderef (tl V2750) V2861) (if (= () V2751) (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (if (shen.pvar? V2751) (do (shen.bindv V2751 () V2861) (let Result (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (do (shen.unbindv V2751 V2861) Result))) false)))) (if (shen.pvar? V2750) (let B (shen.newpv V2861) (do (shen.bindv V2750 (cons B ()) V2861) (let Result (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (do (shen.unbindv V2750 V2861) Result)))) false))) (if (shen.pvar? V2749) (do (shen.bindv V2749 --> V2861) (let Result (let V2752 (shen.lazyderef (tl V2748) V2861) (if (cons? V2752) (let B (hd V2752) (let V2753 (shen.lazyderef (tl V2752) V2861) (if (= () V2753) (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (if (shen.pvar? V2753) (do (shen.bindv V2753 () V2861) (let Result (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (do (shen.unbindv V2753 V2861) Result))) false)))) (if (shen.pvar? V2752) (let B (shen.newpv V2861) (do (shen.bindv V2752 (cons B ()) V2861) (let Result (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (do (shen.unbindv V2752 V2861) Result)))) false))) (do (shen.unbindv V2749 V2861) Result))) false))) (if (shen.pvar? V2748) (let B (shen.newpv V2861) (do (shen.bindv V2748 (cons --> (cons B ())) V2861) (let Result (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (do (shen.unbindv V2748 V2861) Result)))) false)))) (if (shen.pvar? V2747) (let A (shen.newpv V2861) (let B (shen.newpv V2861) (do (shen.bindv V2747 (cons A (cons --> (cons B ()))) V2861) (let Result (let Z (shen.newpv V2861) (let X&& (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Y V2861)) V2861 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2860) V2861 V2862)))))))))) (do (shen.unbindv V2747 V2861) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2754 (shen.lazyderef V2858 V2861) (if (cons? V2754) (let V2755 (shen.lazyderef (hd V2754) V2861) (if (= let V2755) (let V2756 (shen.lazyderef (tl V2754) V2861) (if (cons? V2756) (let X (hd V2756) (let V2757 (shen.lazyderef (tl V2756) V2861) (if (cons? V2757) (let Y (hd V2757) (let V2758 (shen.lazyderef (tl V2757) V2861) (if (cons? V2758) (let Z (hd V2758) (let V2759 (shen.lazyderef (tl V2758) V2861) (if (= () V2759) (let W (shen.newpv V2861) (let X&& (shen.newpv V2861) (let B (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (shen.th* Y B V2860 V2861 (freeze (bind X&& (shen.placeholder) V2861 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2861) (shen.lazyderef X V2861) (shen.lazyderef Z V2861)) V2861 (freeze (shen.th* W V2859 (cons (cons X&& (cons : (cons B ()))) V2860) V2861 V2862))))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2760 (shen.lazyderef V2858 V2861) (if (cons? V2760) (let V2761 (shen.lazyderef (hd V2760) V2861) (if (= open V2761) (let V2762 (shen.lazyderef (tl V2760) V2861) (if (cons? V2762) (let FileName (hd V2762) (let V2763 (shen.lazyderef (tl V2762) V2861) (if (cons? V2763) (let Direction2693 (hd V2763) (let V2764 (shen.lazyderef (tl V2763) V2861) (if (= () V2764) (let V2765 (shen.lazyderef V2859 V2861) (if (cons? V2765) (let V2766 (shen.lazyderef (hd V2765) V2861) (if (= stream V2766) (let V2767 (shen.lazyderef (tl V2765) V2861) (if (cons? V2767) (let Direction (hd V2767) (let V2768 (shen.lazyderef (tl V2767) V2861) (if (= () V2768) (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (if (shen.pvar? V2768) (do (shen.bindv V2768 () V2861) (let Result (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (do (shen.unbindv V2768 V2861) Result))) false)))) (if (shen.pvar? V2767) (let Direction (shen.newpv V2861) (do (shen.bindv V2767 (cons Direction ()) V2861) (let Result (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (do (shen.unbindv V2767 V2861) Result)))) false))) (if (shen.pvar? V2766) (do (shen.bindv V2766 stream V2861) (let Result (let V2769 (shen.lazyderef (tl V2765) V2861) (if (cons? V2769) (let Direction (hd V2769) (let V2770 (shen.lazyderef (tl V2769) V2861) (if (= () V2770) (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (if (shen.pvar? V2770) (do (shen.bindv V2770 () V2861) (let Result (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (do (shen.unbindv V2770 V2861) Result))) false)))) (if (shen.pvar? V2769) (let Direction (shen.newpv V2861) (do (shen.bindv V2769 (cons Direction ()) V2861) (let Result (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (do (shen.unbindv V2769 V2861) Result)))) false))) (do (shen.unbindv V2766 V2861) Result))) false))) (if (shen.pvar? V2765) (let Direction (shen.newpv V2861) (do (shen.bindv V2765 (cons stream (cons Direction ())) V2861) (let Result (do (shen.incinfs) (unify! Direction Direction2693 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* FileName string V2860 V2861 V2862)))))) (do (shen.unbindv V2765 V2861) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2771 (shen.lazyderef V2858 V2861) (if (cons? V2771) (let V2772 (shen.lazyderef (hd V2771) V2861) (if (= type V2772) (let V2773 (shen.lazyderef (tl V2771) V2861) (if (cons? V2773) (let X (hd V2773) (let V2774 (shen.lazyderef (tl V2773) V2861) (if (cons? V2774) (let A (hd V2774) (let V2775 (shen.lazyderef (tl V2774) V2861) (if (= () V2775) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (unify A V2859 V2861 (freeze (shen.th* X A V2860 V2861 V2862)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2776 (shen.lazyderef V2858 V2861) (if (cons? V2776) (let V2777 (shen.lazyderef (hd V2776) V2861) (if (= input+ V2777) (let V2778 (shen.lazyderef (tl V2776) V2861) (if (cons? V2778) (let A (hd V2778) (let V2779 (shen.lazyderef (tl V2778) V2861) (if (cons? V2779) (let Stream (hd V2779) (let V2780 (shen.lazyderef (tl V2779) V2861) (if (= () V2780) (let C (shen.newpv V2861) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2861)) V2861 (freeze (unify V2859 C V2861 (freeze (shen.th* Stream (cons stream (cons in ())) V2860 V2861 V2862))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2781 (shen.lazyderef V2858 V2861) (if (cons? V2781) (let V2782 (shen.lazyderef (hd V2781) V2861) (if (= read+ V2782) (let V2783 (shen.lazyderef (tl V2781) V2861) (if (cons? V2783) (let V2784 (shen.lazyderef (hd V2783) V2861) (if (= : V2784) (let V2785 (shen.lazyderef (tl V2783) V2861) (if (cons? V2785) (let A (hd V2785) (let V2786 (shen.lazyderef (tl V2785) V2861) (if (cons? V2786) (let Stream (hd V2786) (let V2787 (shen.lazyderef (tl V2786) V2861) (if (= () V2787) (let C (shen.newpv V2861) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2861)) V2861 (freeze (unify V2859 C V2861 (freeze (shen.th* Stream (cons stream (cons in ())) V2860 V2861 V2862))))))) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2788 (shen.lazyderef V2858 V2861) (if (cons? V2788) (let V2789 (shen.lazyderef (hd V2788) V2861) (if (= set V2789) (let V2790 (shen.lazyderef (tl V2788) V2861) (if (cons? V2790) (let Var (hd V2790) (let V2791 (shen.lazyderef (tl V2790) V2861) (if (cons? V2791) (let Val (hd V2791) (let V2792 (shen.lazyderef (tl V2791) V2861) (if (= () V2792) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (shen.th* Var symbol V2860 V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* (cons value (cons Var ())) V2859 V2860 V2861 (freeze (shen.th* Val V2859 V2860 V2861 V2862)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2793 (shen.lazyderef V2858 V2861) (if (cons? V2793) (let V2794 (shen.lazyderef (hd V2793) V2861) (if (= shen.<-sem V2794) (let V2795 (shen.lazyderef (tl V2793) V2861) (if (cons? V2795) (let F (hd V2795) (let V2796 (shen.lazyderef (tl V2795) V2861) (if (= () V2796) (let A (shen.newpv V2861) (let F&& (shen.newpv V2861) (let B (shen.newpv V2861) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2860 V2861 (freeze (cut Throwcontrol V2861 (freeze (bind F&& (concat && (shen.lazyderef F V2861)) V2861 (freeze (cut Throwcontrol V2861 (freeze (shen.th* F&& V2859 (cons (cons F&& (cons : (cons B ()))) V2860) V2861 V2862))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2797 (shen.lazyderef V2858 V2861) (if (cons? V2797) (let V2798 (shen.lazyderef (hd V2797) V2861) (if (= fail V2798) (let V2799 (shen.lazyderef (tl V2797) V2861) (if (= () V2799) (let V2800 (shen.lazyderef V2859 V2861) (if (= symbol V2800) (do (shen.incinfs) (thaw V2862)) (if (shen.pvar? V2800) (do (shen.bindv V2800 symbol V2861) (let Result (do (shen.incinfs) (thaw V2862)) (do (shen.unbindv V2800 V2861) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2861) (do (shen.incinfs) (shen.t*-hyps V2860 NewHyp V2861 (freeze (shen.th* V2858 V2859 NewHyp V2861 V2862))))) (if (= Case false) (let Case (let V2801 (shen.lazyderef V2858 V2861) (if (cons? V2801) (let V2802 (shen.lazyderef (hd V2801) V2861) (if (= define V2802) (let V2803 (shen.lazyderef (tl V2801) V2861) (if (cons? V2803) (let F (hd V2803) (let X (tl V2803) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (shen.t*-def (cons define (cons F X)) V2859 V2860 V2861 V2862)))))) false)) false)) false)) (if (= Case false) (let Case (let V2804 (shen.lazyderef V2858 V2861) (if (cons? V2804) (let V2805 (shen.lazyderef (hd V2804) V2861) (if (= defcc V2805) (let V2806 (shen.lazyderef (tl V2804) V2861) (if (cons? V2806) (let F (hd V2806) (let X (tl V2806) (do (shen.incinfs) (cut Throwcontrol V2861 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2859 V2860 V2861 V2862)))))) false)) false)) false)) (if (= Case false) (let Case (let V2807 (shen.lazyderef V2858 V2861) (if (cons? V2807) (let V2808 (shen.lazyderef (hd V2807) V2861) (if (= defmacro V2808) (let V2809 (shen.lazyderef V2859 V2861) (if (= unit V2809) (do (shen.incinfs) (cut Throwcontrol V2861 V2862)) (if (shen.pvar? V2809) (do (shen.bindv V2809 unit V2861) (let Result (do (shen.incinfs) (cut Throwcontrol V2861 V2862)) (do (shen.unbindv V2809 V2861) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2810 (shen.lazyderef V2858 V2861) (if (cons? V2810) (let V2811 (shen.lazyderef (hd V2810) V2861) (if (= shen.process-datatype V2811) (let V2812 (shen.lazyderef V2859 V2861) (if (= symbol V2812) (do (shen.incinfs) (thaw V2862)) (if (shen.pvar? V2812) (do (shen.bindv V2812 symbol V2861) (let Result (do (shen.incinfs) (thaw V2862)) (do (shen.unbindv V2812 V2861) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2813 (shen.lazyderef V2858 V2861) (if (cons? V2813) (let V2814 (shen.lazyderef (hd V2813) V2861) (if (= shen.synonyms-help V2814) (let V2815 (shen.lazyderef V2859 V2861) (if (= symbol V2815) (do (shen.incinfs) (thaw V2862)) (if (shen.pvar? V2815) (do (shen.bindv V2815 symbol V2861) (let Result (do (shen.incinfs) (thaw V2862)) (do (shen.unbindv V2815 V2861) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2861) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2861 (freeze (shen.udefs* (cons V2858 (cons : (cons V2859 ()))) V2860 Datatypes V2861 V2862))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
73
+ (defun shen.th* (V2860 V2861 V2862 V2863 V2864) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2860 (cons : (cons V2861 ()))) V2862 V2863 (freeze (fwhen false V2863 V2864)))) (if (= Case false) (let Case (let F (shen.newpv V2863) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2860 V2863)) V2863 (freeze (bind F (shen.sigf (shen.lazyderef V2860 V2863)) V2863 (freeze (call (cons F (cons V2861 ())) V2863 V2864))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2860 V2861 V2863 V2864)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2860 V2861 V2862 V2863 V2864)) (if (= Case false) (let Case (let V2706 (shen.lazyderef V2860 V2863) (if (cons? V2706) (let F (hd V2706) (let V2707 (shen.lazyderef (tl V2706) V2863) (if (= () V2707) (do (shen.incinfs) (shen.th* F (cons --> (cons V2861 ())) V2862 V2863 V2864)) false))) false)) (if (= Case false) (let Case (let V2708 (shen.lazyderef V2860 V2863) (if (cons? V2708) (let F (hd V2708) (let V2709 (shen.lazyderef (tl V2708) V2863) (if (cons? V2709) (let X (hd V2709) (let V2710 (shen.lazyderef (tl V2709) V2863) (if (= () V2710) (let B (shen.newpv V2863) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2861 ()))) V2862 V2863 (freeze (shen.th* X B V2862 V2863 V2864))))) false))) false))) false)) (if (= Case false) (let Case (let V2711 (shen.lazyderef V2860 V2863) (if (cons? V2711) (let V2712 (shen.lazyderef (hd V2711) V2863) (if (= cons V2712) (let V2713 (shen.lazyderef (tl V2711) V2863) (if (cons? V2713) (let X (hd V2713) (let V2714 (shen.lazyderef (tl V2713) V2863) (if (cons? V2714) (let Y (hd V2714) (let V2715 (shen.lazyderef (tl V2714) V2863) (if (= () V2715) (let V2716 (shen.lazyderef V2861 V2863) (if (cons? V2716) (let V2717 (shen.lazyderef (hd V2716) V2863) (if (= list V2717) (let V2718 (shen.lazyderef (tl V2716) V2863) (if (cons? V2718) (let A (hd V2718) (let V2719 (shen.lazyderef (tl V2718) V2863) (if (= () V2719) (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (if (shen.pvar? V2719) (do (shen.bindv V2719 () V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2719 V2863) Result))) false)))) (if (shen.pvar? V2718) (let A (shen.newpv V2863) (do (shen.bindv V2718 (cons A ()) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2718 V2863) Result)))) false))) (if (shen.pvar? V2717) (do (shen.bindv V2717 list V2863) (let Result (let V2720 (shen.lazyderef (tl V2716) V2863) (if (cons? V2720) (let A (hd V2720) (let V2721 (shen.lazyderef (tl V2720) V2863) (if (= () V2721) (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (if (shen.pvar? V2721) (do (shen.bindv V2721 () V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2721 V2863) Result))) false)))) (if (shen.pvar? V2720) (let A (shen.newpv V2863) (do (shen.bindv V2720 (cons A ()) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2720 V2863) Result)))) false))) (do (shen.unbindv V2717 V2863) Result))) false))) (if (shen.pvar? V2716) (let A (shen.newpv V2863) (do (shen.bindv V2716 (cons list (cons A ())) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons list (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2716 V2863) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2722 (shen.lazyderef V2860 V2863) (if (cons? V2722) (let V2723 (shen.lazyderef (hd V2722) V2863) (if (= @p V2723) (let V2724 (shen.lazyderef (tl V2722) V2863) (if (cons? V2724) (let X (hd V2724) (let V2725 (shen.lazyderef (tl V2724) V2863) (if (cons? V2725) (let Y (hd V2725) (let V2726 (shen.lazyderef (tl V2725) V2863) (if (= () V2726) (let V2727 (shen.lazyderef V2861 V2863) (if (cons? V2727) (let A (hd V2727) (let V2728 (shen.lazyderef (tl V2727) V2863) (if (cons? V2728) (let V2729 (shen.lazyderef (hd V2728) V2863) (if (= * V2729) (let V2730 (shen.lazyderef (tl V2728) V2863) (if (cons? V2730) (let B (hd V2730) (let V2731 (shen.lazyderef (tl V2730) V2863) (if (= () V2731) (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (if (shen.pvar? V2731) (do (shen.bindv V2731 () V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (do (shen.unbindv V2731 V2863) Result))) false)))) (if (shen.pvar? V2730) (let B (shen.newpv V2863) (do (shen.bindv V2730 (cons B ()) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (do (shen.unbindv V2730 V2863) Result)))) false))) (if (shen.pvar? V2729) (do (shen.bindv V2729 * V2863) (let Result (let V2732 (shen.lazyderef (tl V2728) V2863) (if (cons? V2732) (let B (hd V2732) (let V2733 (shen.lazyderef (tl V2732) V2863) (if (= () V2733) (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (if (shen.pvar? V2733) (do (shen.bindv V2733 () V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (do (shen.unbindv V2733 V2863) Result))) false)))) (if (shen.pvar? V2732) (let B (shen.newpv V2863) (do (shen.bindv V2732 (cons B ()) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (do (shen.unbindv V2732 V2863) Result)))) false))) (do (shen.unbindv V2729 V2863) Result))) false))) (if (shen.pvar? V2728) (let B (shen.newpv V2863) (do (shen.bindv V2728 (cons * (cons B ())) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (do (shen.unbindv V2728 V2863) Result)))) false)))) (if (shen.pvar? V2727) (let A (shen.newpv V2863) (let B (shen.newpv V2863) (do (shen.bindv V2727 (cons A (cons * (cons B ()))) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y B V2862 V2863 V2864)))) (do (shen.unbindv V2727 V2863) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2734 (shen.lazyderef V2860 V2863) (if (cons? V2734) (let V2735 (shen.lazyderef (hd V2734) V2863) (if (= @v V2735) (let V2736 (shen.lazyderef (tl V2734) V2863) (if (cons? V2736) (let X (hd V2736) (let V2737 (shen.lazyderef (tl V2736) V2863) (if (cons? V2737) (let Y (hd V2737) (let V2738 (shen.lazyderef (tl V2737) V2863) (if (= () V2738) (let V2739 (shen.lazyderef V2861 V2863) (if (cons? V2739) (let V2740 (shen.lazyderef (hd V2739) V2863) (if (= vector V2740) (let V2741 (shen.lazyderef (tl V2739) V2863) (if (cons? V2741) (let A (hd V2741) (let V2742 (shen.lazyderef (tl V2741) V2863) (if (= () V2742) (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (if (shen.pvar? V2742) (do (shen.bindv V2742 () V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2742 V2863) Result))) false)))) (if (shen.pvar? V2741) (let A (shen.newpv V2863) (do (shen.bindv V2741 (cons A ()) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2741 V2863) Result)))) false))) (if (shen.pvar? V2740) (do (shen.bindv V2740 vector V2863) (let Result (let V2743 (shen.lazyderef (tl V2739) V2863) (if (cons? V2743) (let A (hd V2743) (let V2744 (shen.lazyderef (tl V2743) V2863) (if (= () V2744) (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (if (shen.pvar? V2744) (do (shen.bindv V2744 () V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2744 V2863) Result))) false)))) (if (shen.pvar? V2743) (let A (shen.newpv V2863) (do (shen.bindv V2743 (cons A ()) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2743 V2863) Result)))) false))) (do (shen.unbindv V2740 V2863) Result))) false))) (if (shen.pvar? V2739) (let A (shen.newpv V2863) (do (shen.bindv V2739 (cons vector (cons A ())) V2863) (let Result (do (shen.incinfs) (shen.th* X A V2862 V2863 (freeze (shen.th* Y (cons vector (cons A ())) V2862 V2863 V2864)))) (do (shen.unbindv V2739 V2863) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2745 (shen.lazyderef V2860 V2863) (if (cons? V2745) (let V2746 (shen.lazyderef (hd V2745) V2863) (if (= @s V2746) (let V2747 (shen.lazyderef (tl V2745) V2863) (if (cons? V2747) (let X (hd V2747) (let V2748 (shen.lazyderef (tl V2747) V2863) (if (cons? V2748) (let Y (hd V2748) (let V2749 (shen.lazyderef (tl V2748) V2863) (if (= () V2749) (let V2750 (shen.lazyderef V2861 V2863) (if (= string V2750) (do (shen.incinfs) (shen.th* X string V2862 V2863 (freeze (shen.th* Y string V2862 V2863 V2864)))) (if (shen.pvar? V2750) (do (shen.bindv V2750 string V2863) (let Result (do (shen.incinfs) (shen.th* X string V2862 V2863 (freeze (shen.th* Y string V2862 V2863 V2864)))) (do (shen.unbindv V2750 V2863) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2751 (shen.lazyderef V2860 V2863) (if (cons? V2751) (let V2752 (shen.lazyderef (hd V2751) V2863) (if (= lambda V2752) (let V2753 (shen.lazyderef (tl V2751) V2863) (if (cons? V2753) (let X (hd V2753) (let V2754 (shen.lazyderef (tl V2753) V2863) (if (cons? V2754) (let Y (hd V2754) (let V2755 (shen.lazyderef (tl V2754) V2863) (if (= () V2755) (let V2756 (shen.lazyderef V2861 V2863) (if (cons? V2756) (let A (hd V2756) (let V2757 (shen.lazyderef (tl V2756) V2863) (if (cons? V2757) (let V2758 (shen.lazyderef (hd V2757) V2863) (if (= --> V2758) (let V2759 (shen.lazyderef (tl V2757) V2863) (if (cons? V2759) (let B (hd V2759) (let V2760 (shen.lazyderef (tl V2759) V2863) (if (= () V2760) (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (if (shen.pvar? V2760) (do (shen.bindv V2760 () V2863) (let Result (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (do (shen.unbindv V2760 V2863) Result))) false)))) (if (shen.pvar? V2759) (let B (shen.newpv V2863) (do (shen.bindv V2759 (cons B ()) V2863) (let Result (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (do (shen.unbindv V2759 V2863) Result)))) false))) (if (shen.pvar? V2758) (do (shen.bindv V2758 --> V2863) (let Result (let V2761 (shen.lazyderef (tl V2757) V2863) (if (cons? V2761) (let B (hd V2761) (let V2762 (shen.lazyderef (tl V2761) V2863) (if (= () V2762) (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (if (shen.pvar? V2762) (do (shen.bindv V2762 () V2863) (let Result (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (do (shen.unbindv V2762 V2863) Result))) false)))) (if (shen.pvar? V2761) (let B (shen.newpv V2863) (do (shen.bindv V2761 (cons B ()) V2863) (let Result (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (do (shen.unbindv V2761 V2863) Result)))) false))) (do (shen.unbindv V2758 V2863) Result))) false))) (if (shen.pvar? V2757) (let B (shen.newpv V2863) (do (shen.bindv V2757 (cons --> (cons B ())) V2863) (let Result (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (do (shen.unbindv V2757 V2863) Result)))) false)))) (if (shen.pvar? V2756) (let A (shen.newpv V2863) (let B (shen.newpv V2863) (do (shen.bindv V2756 (cons A (cons --> (cons B ()))) V2863) (let Result (let Z (shen.newpv V2863) (let X&& (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Y V2863)) V2863 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2862) V2863 V2864)))))))))) (do (shen.unbindv V2756 V2863) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2763 (shen.lazyderef V2860 V2863) (if (cons? V2763) (let V2764 (shen.lazyderef (hd V2763) V2863) (if (= let V2764) (let V2765 (shen.lazyderef (tl V2763) V2863) (if (cons? V2765) (let X (hd V2765) (let V2766 (shen.lazyderef (tl V2765) V2863) (if (cons? V2766) (let Y (hd V2766) (let V2767 (shen.lazyderef (tl V2766) V2863) (if (cons? V2767) (let Z (hd V2767) (let V2768 (shen.lazyderef (tl V2767) V2863) (if (= () V2768) (let W (shen.newpv V2863) (let X&& (shen.newpv V2863) (let B (shen.newpv V2863) (do (shen.incinfs) (shen.th* Y B V2862 V2863 (freeze (bind X&& (shen.placeholder) V2863 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2863) (shen.lazyderef X V2863) (shen.lazyderef Z V2863)) V2863 (freeze (shen.th* W V2861 (cons (cons X&& (cons : (cons B ()))) V2862) V2863 V2864))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2769 (shen.lazyderef V2860 V2863) (if (cons? V2769) (let V2770 (shen.lazyderef (hd V2769) V2863) (if (= open V2770) (let V2771 (shen.lazyderef (tl V2769) V2863) (if (cons? V2771) (let FileName (hd V2771) (let V2772 (shen.lazyderef (tl V2771) V2863) (if (cons? V2772) (let Direction2702 (hd V2772) (let V2773 (shen.lazyderef (tl V2772) V2863) (if (= () V2773) (let V2774 (shen.lazyderef V2861 V2863) (if (cons? V2774) (let V2775 (shen.lazyderef (hd V2774) V2863) (if (= stream V2775) (let V2776 (shen.lazyderef (tl V2774) V2863) (if (cons? V2776) (let Direction (hd V2776) (let V2777 (shen.lazyderef (tl V2776) V2863) (if (= () V2777) (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (if (shen.pvar? V2777) (do (shen.bindv V2777 () V2863) (let Result (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (do (shen.unbindv V2777 V2863) Result))) false)))) (if (shen.pvar? V2776) (let Direction (shen.newpv V2863) (do (shen.bindv V2776 (cons Direction ()) V2863) (let Result (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (do (shen.unbindv V2776 V2863) Result)))) false))) (if (shen.pvar? V2775) (do (shen.bindv V2775 stream V2863) (let Result (let V2778 (shen.lazyderef (tl V2774) V2863) (if (cons? V2778) (let Direction (hd V2778) (let V2779 (shen.lazyderef (tl V2778) V2863) (if (= () V2779) (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (if (shen.pvar? V2779) (do (shen.bindv V2779 () V2863) (let Result (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (do (shen.unbindv V2779 V2863) Result))) false)))) (if (shen.pvar? V2778) (let Direction (shen.newpv V2863) (do (shen.bindv V2778 (cons Direction ()) V2863) (let Result (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (do (shen.unbindv V2778 V2863) Result)))) false))) (do (shen.unbindv V2775 V2863) Result))) false))) (if (shen.pvar? V2774) (let Direction (shen.newpv V2863) (do (shen.bindv V2774 (cons stream (cons Direction ())) V2863) (let Result (do (shen.incinfs) (unify! Direction Direction2702 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* FileName string V2862 V2863 V2864)))))) (do (shen.unbindv V2774 V2863) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2780 (shen.lazyderef V2860 V2863) (if (cons? V2780) (let V2781 (shen.lazyderef (hd V2780) V2863) (if (= type V2781) (let V2782 (shen.lazyderef (tl V2780) V2863) (if (cons? V2782) (let X (hd V2782) (let V2783 (shen.lazyderef (tl V2782) V2863) (if (cons? V2783) (let A (hd V2783) (let V2784 (shen.lazyderef (tl V2783) V2863) (if (= () V2784) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (unify A V2861 V2863 (freeze (shen.th* X A V2862 V2863 V2864)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2785 (shen.lazyderef V2860 V2863) (if (cons? V2785) (let V2786 (shen.lazyderef (hd V2785) V2863) (if (= input+ V2786) (let V2787 (shen.lazyderef (tl V2785) V2863) (if (cons? V2787) (let A (hd V2787) (let V2788 (shen.lazyderef (tl V2787) V2863) (if (cons? V2788) (let Stream (hd V2788) (let V2789 (shen.lazyderef (tl V2788) V2863) (if (= () V2789) (let C (shen.newpv V2863) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2863)) V2863 (freeze (unify V2861 C V2863 (freeze (shen.th* Stream (cons stream (cons in ())) V2862 V2863 V2864))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2790 (shen.lazyderef V2860 V2863) (if (cons? V2790) (let V2791 (shen.lazyderef (hd V2790) V2863) (if (= set V2791) (let V2792 (shen.lazyderef (tl V2790) V2863) (if (cons? V2792) (let Var (hd V2792) (let V2793 (shen.lazyderef (tl V2792) V2863) (if (cons? V2793) (let Val (hd V2793) (let V2794 (shen.lazyderef (tl V2793) V2863) (if (= () V2794) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (shen.th* Var symbol V2862 V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* (cons value (cons Var ())) V2861 V2862 V2863 (freeze (shen.th* Val V2861 V2862 V2863 V2864)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2795 (shen.lazyderef V2860 V2863) (if (cons? V2795) (let V2796 (shen.lazyderef (hd V2795) V2863) (if (= shen.<-sem V2796) (let V2797 (shen.lazyderef (tl V2795) V2863) (if (cons? V2797) (let F (hd V2797) (let V2798 (shen.lazyderef (tl V2797) V2863) (if (= () V2798) (let A (shen.newpv V2863) (let F&& (shen.newpv V2863) (let B (shen.newpv V2863) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2862 V2863 (freeze (cut Throwcontrol V2863 (freeze (bind F&& (concat && (shen.lazyderef F V2863)) V2863 (freeze (cut Throwcontrol V2863 (freeze (shen.th* F&& V2861 (cons (cons F&& (cons : (cons B ()))) V2862) V2863 V2864))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2799 (shen.lazyderef V2860 V2863) (if (cons? V2799) (let V2800 (shen.lazyderef (hd V2799) V2863) (if (= fail V2800) (let V2801 (shen.lazyderef (tl V2799) V2863) (if (= () V2801) (let V2802 (shen.lazyderef V2861 V2863) (if (= symbol V2802) (do (shen.incinfs) (thaw V2864)) (if (shen.pvar? V2802) (do (shen.bindv V2802 symbol V2863) (let Result (do (shen.incinfs) (thaw V2864)) (do (shen.unbindv V2802 V2863) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2863) (do (shen.incinfs) (shen.t*-hyps V2862 NewHyp V2863 (freeze (shen.th* V2860 V2861 NewHyp V2863 V2864))))) (if (= Case false) (let Case (let V2803 (shen.lazyderef V2860 V2863) (if (cons? V2803) (let V2804 (shen.lazyderef (hd V2803) V2863) (if (= define V2804) (let V2805 (shen.lazyderef (tl V2803) V2863) (if (cons? V2805) (let F (hd V2805) (let X (tl V2805) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (shen.t*-def (cons define (cons F X)) V2861 V2862 V2863 V2864)))))) false)) false)) false)) (if (= Case false) (let Case (let V2806 (shen.lazyderef V2860 V2863) (if (cons? V2806) (let V2807 (shen.lazyderef (hd V2806) V2863) (if (= defcc V2807) (let V2808 (shen.lazyderef (tl V2806) V2863) (if (cons? V2808) (let F (hd V2808) (let X (tl V2808) (do (shen.incinfs) (cut Throwcontrol V2863 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2861 V2862 V2863 V2864)))))) false)) false)) false)) (if (= Case false) (let Case (let V2809 (shen.lazyderef V2860 V2863) (if (cons? V2809) (let V2810 (shen.lazyderef (hd V2809) V2863) (if (= defmacro V2810) (let V2811 (shen.lazyderef V2861 V2863) (if (= unit V2811) (do (shen.incinfs) (cut Throwcontrol V2863 V2864)) (if (shen.pvar? V2811) (do (shen.bindv V2811 unit V2863) (let Result (do (shen.incinfs) (cut Throwcontrol V2863 V2864)) (do (shen.unbindv V2811 V2863) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2812 (shen.lazyderef V2860 V2863) (if (cons? V2812) (let V2813 (shen.lazyderef (hd V2812) V2863) (if (= shen.process-datatype V2813) (let V2814 (shen.lazyderef V2861 V2863) (if (= symbol V2814) (do (shen.incinfs) (thaw V2864)) (if (shen.pvar? V2814) (do (shen.bindv V2814 symbol V2863) (let Result (do (shen.incinfs) (thaw V2864)) (do (shen.unbindv V2814 V2863) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2815 (shen.lazyderef V2860 V2863) (if (cons? V2815) (let V2816 (shen.lazyderef (hd V2815) V2863) (if (= shen.synonyms-help V2816) (let V2817 (shen.lazyderef V2861 V2863) (if (= symbol V2817) (do (shen.incinfs) (thaw V2864)) (if (shen.pvar? V2817) (do (shen.bindv V2817 symbol V2863) (let Result (do (shen.incinfs) (thaw V2864)) (do (shen.unbindv V2817 V2863) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2863) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2863 (freeze (shen.udefs* (cons V2860 (cons : (cons V2861 ()))) V2862 Datatypes V2863 V2864))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
74
74
 
75
- (defun shen.t*-hyps (V2863 V2864 V2865 V2866) (let Case (let V2608 (shen.lazyderef V2863 V2865) (if (cons? V2608) (let V2609 (shen.lazyderef (hd V2608) V2865) (if (cons? V2609) (let V2610 (shen.lazyderef (hd V2609) V2865) (if (cons? V2610) (let V2611 (shen.lazyderef (hd V2610) V2865) (if (= cons V2611) (let V2612 (shen.lazyderef (tl V2610) V2865) (if (cons? V2612) (let X (hd V2612) (let V2613 (shen.lazyderef (tl V2612) V2865) (if (cons? V2613) (let Y (hd V2613) (let V2614 (shen.lazyderef (tl V2613) V2865) (if (= () V2614) (let V2615 (shen.lazyderef (tl V2609) V2865) (if (cons? V2615) (let V2616 (shen.lazyderef (hd V2615) V2865) (if (= : V2616) (let V2617 (shen.lazyderef (tl V2615) V2865) (if (cons? V2617) (let V2618 (shen.lazyderef (hd V2617) V2865) (if (cons? V2618) (let V2619 (shen.lazyderef (hd V2618) V2865) (if (= list V2619) (let V2620 (shen.lazyderef (tl V2618) V2865) (if (cons? V2620) (let A (hd V2620) (let V2621 (shen.lazyderef (tl V2620) V2865) (if (= () V2621) (let V2622 (shen.lazyderef (tl V2617) V2865) (if (= () V2622) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2622) (do (shen.bindv V2622 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2622 V2865) Result))) false))) (if (shen.pvar? V2621) (do (shen.bindv V2621 () V2865) (let Result (let V2623 (shen.lazyderef (tl V2617) V2865) (if (= () V2623) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2623) (do (shen.bindv V2623 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2623 V2865) Result))) false))) (do (shen.unbindv V2621 V2865) Result))) false)))) (if (shen.pvar? V2620) (let A (shen.newpv V2865) (do (shen.bindv V2620 (cons A ()) V2865) (let Result (let V2624 (shen.lazyderef (tl V2617) V2865) (if (= () V2624) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2624) (do (shen.bindv V2624 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2624 V2865) Result))) false))) (do (shen.unbindv V2620 V2865) Result)))) false))) (if (shen.pvar? V2619) (do (shen.bindv V2619 list V2865) (let Result (let V2625 (shen.lazyderef (tl V2618) V2865) (if (cons? V2625) (let A (hd V2625) (let V2626 (shen.lazyderef (tl V2625) V2865) (if (= () V2626) (let V2627 (shen.lazyderef (tl V2617) V2865) (if (= () V2627) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2627) (do (shen.bindv V2627 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2627 V2865) Result))) false))) (if (shen.pvar? V2626) (do (shen.bindv V2626 () V2865) (let Result (let V2628 (shen.lazyderef (tl V2617) V2865) (if (= () V2628) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2628) (do (shen.bindv V2628 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2628 V2865) Result))) false))) (do (shen.unbindv V2626 V2865) Result))) false)))) (if (shen.pvar? V2625) (let A (shen.newpv V2865) (do (shen.bindv V2625 (cons A ()) V2865) (let Result (let V2629 (shen.lazyderef (tl V2617) V2865) (if (= () V2629) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2629) (do (shen.bindv V2629 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2629 V2865) Result))) false))) (do (shen.unbindv V2625 V2865) Result)))) false))) (do (shen.unbindv V2619 V2865) Result))) false))) (if (shen.pvar? V2618) (let A (shen.newpv V2865) (do (shen.bindv V2618 (cons list (cons A ())) V2865) (let Result (let V2630 (shen.lazyderef (tl V2617) V2865) (if (= () V2630) (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2630) (do (shen.bindv V2630 () V2865) (let Result (let Hyp (tl V2608) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons list (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2630 V2865) Result))) false))) (do (shen.unbindv V2618 V2865) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2631 (shen.lazyderef V2863 V2865) (if (cons? V2631) (let V2632 (shen.lazyderef (hd V2631) V2865) (if (cons? V2632) (let V2633 (shen.lazyderef (hd V2632) V2865) (if (cons? V2633) (let V2634 (shen.lazyderef (hd V2633) V2865) (if (= @p V2634) (let V2635 (shen.lazyderef (tl V2633) V2865) (if (cons? V2635) (let X (hd V2635) (let V2636 (shen.lazyderef (tl V2635) V2865) (if (cons? V2636) (let Y (hd V2636) (let V2637 (shen.lazyderef (tl V2636) V2865) (if (= () V2637) (let V2638 (shen.lazyderef (tl V2632) V2865) (if (cons? V2638) (let V2639 (shen.lazyderef (hd V2638) V2865) (if (= : V2639) (let V2640 (shen.lazyderef (tl V2638) V2865) (if (cons? V2640) (let V2641 (shen.lazyderef (hd V2640) V2865) (if (cons? V2641) (let A (hd V2641) (let V2642 (shen.lazyderef (tl V2641) V2865) (if (cons? V2642) (let V2643 (shen.lazyderef (hd V2642) V2865) (if (= * V2643) (let V2644 (shen.lazyderef (tl V2642) V2865) (if (cons? V2644) (let B (hd V2644) (let V2645 (shen.lazyderef (tl V2644) V2865) (if (= () V2645) (let V2646 (shen.lazyderef (tl V2640) V2865) (if (= () V2646) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2646) (do (shen.bindv V2646 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2646 V2865) Result))) false))) (if (shen.pvar? V2645) (do (shen.bindv V2645 () V2865) (let Result (let V2647 (shen.lazyderef (tl V2640) V2865) (if (= () V2647) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2647) (do (shen.bindv V2647 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2647 V2865) Result))) false))) (do (shen.unbindv V2645 V2865) Result))) false)))) (if (shen.pvar? V2644) (let B (shen.newpv V2865) (do (shen.bindv V2644 (cons B ()) V2865) (let Result (let V2648 (shen.lazyderef (tl V2640) V2865) (if (= () V2648) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2648) (do (shen.bindv V2648 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2648 V2865) Result))) false))) (do (shen.unbindv V2644 V2865) Result)))) false))) (if (shen.pvar? V2643) (do (shen.bindv V2643 * V2865) (let Result (let V2649 (shen.lazyderef (tl V2642) V2865) (if (cons? V2649) (let B (hd V2649) (let V2650 (shen.lazyderef (tl V2649) V2865) (if (= () V2650) (let V2651 (shen.lazyderef (tl V2640) V2865) (if (= () V2651) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2651) (do (shen.bindv V2651 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2651 V2865) Result))) false))) (if (shen.pvar? V2650) (do (shen.bindv V2650 () V2865) (let Result (let V2652 (shen.lazyderef (tl V2640) V2865) (if (= () V2652) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2652) (do (shen.bindv V2652 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2652 V2865) Result))) false))) (do (shen.unbindv V2650 V2865) Result))) false)))) (if (shen.pvar? V2649) (let B (shen.newpv V2865) (do (shen.bindv V2649 (cons B ()) V2865) (let Result (let V2653 (shen.lazyderef (tl V2640) V2865) (if (= () V2653) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2653) (do (shen.bindv V2653 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2653 V2865) Result))) false))) (do (shen.unbindv V2649 V2865) Result)))) false))) (do (shen.unbindv V2643 V2865) Result))) false))) (if (shen.pvar? V2642) (let B (shen.newpv V2865) (do (shen.bindv V2642 (cons * (cons B ())) V2865) (let Result (let V2654 (shen.lazyderef (tl V2640) V2865) (if (= () V2654) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2654) (do (shen.bindv V2654 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2654 V2865) Result))) false))) (do (shen.unbindv V2642 V2865) Result)))) false)))) (if (shen.pvar? V2641) (let A (shen.newpv V2865) (let B (shen.newpv V2865) (do (shen.bindv V2641 (cons A (cons * (cons B ()))) V2865) (let Result (let V2655 (shen.lazyderef (tl V2640) V2865) (if (= () V2655) (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2655) (do (shen.bindv V2655 () V2865) (let Result (let Hyp (tl V2631) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (shen.lazyderef B V2865) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2655 V2865) Result))) false))) (do (shen.unbindv V2641 V2865) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2656 (shen.lazyderef V2863 V2865) (if (cons? V2656) (let V2657 (shen.lazyderef (hd V2656) V2865) (if (cons? V2657) (let V2658 (shen.lazyderef (hd V2657) V2865) (if (cons? V2658) (let V2659 (shen.lazyderef (hd V2658) V2865) (if (= @v V2659) (let V2660 (shen.lazyderef (tl V2658) V2865) (if (cons? V2660) (let X (hd V2660) (let V2661 (shen.lazyderef (tl V2660) V2865) (if (cons? V2661) (let Y (hd V2661) (let V2662 (shen.lazyderef (tl V2661) V2865) (if (= () V2662) (let V2663 (shen.lazyderef (tl V2657) V2865) (if (cons? V2663) (let V2664 (shen.lazyderef (hd V2663) V2865) (if (= : V2664) (let V2665 (shen.lazyderef (tl V2663) V2865) (if (cons? V2665) (let V2666 (shen.lazyderef (hd V2665) V2865) (if (cons? V2666) (let V2667 (shen.lazyderef (hd V2666) V2865) (if (= vector V2667) (let V2668 (shen.lazyderef (tl V2666) V2865) (if (cons? V2668) (let A (hd V2668) (let V2669 (shen.lazyderef (tl V2668) V2865) (if (= () V2669) (let V2670 (shen.lazyderef (tl V2665) V2865) (if (= () V2670) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2670) (do (shen.bindv V2670 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2670 V2865) Result))) false))) (if (shen.pvar? V2669) (do (shen.bindv V2669 () V2865) (let Result (let V2671 (shen.lazyderef (tl V2665) V2865) (if (= () V2671) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2671) (do (shen.bindv V2671 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2671 V2865) Result))) false))) (do (shen.unbindv V2669 V2865) Result))) false)))) (if (shen.pvar? V2668) (let A (shen.newpv V2865) (do (shen.bindv V2668 (cons A ()) V2865) (let Result (let V2672 (shen.lazyderef (tl V2665) V2865) (if (= () V2672) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2672) (do (shen.bindv V2672 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2672 V2865) Result))) false))) (do (shen.unbindv V2668 V2865) Result)))) false))) (if (shen.pvar? V2667) (do (shen.bindv V2667 vector V2865) (let Result (let V2673 (shen.lazyderef (tl V2666) V2865) (if (cons? V2673) (let A (hd V2673) (let V2674 (shen.lazyderef (tl V2673) V2865) (if (= () V2674) (let V2675 (shen.lazyderef (tl V2665) V2865) (if (= () V2675) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2675) (do (shen.bindv V2675 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2675 V2865) Result))) false))) (if (shen.pvar? V2674) (do (shen.bindv V2674 () V2865) (let Result (let V2676 (shen.lazyderef (tl V2665) V2865) (if (= () V2676) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2676) (do (shen.bindv V2676 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2676 V2865) Result))) false))) (do (shen.unbindv V2674 V2865) Result))) false)))) (if (shen.pvar? V2673) (let A (shen.newpv V2865) (do (shen.bindv V2673 (cons A ()) V2865) (let Result (let V2677 (shen.lazyderef (tl V2665) V2865) (if (= () V2677) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2677) (do (shen.bindv V2677 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2677 V2865) Result))) false))) (do (shen.unbindv V2673 V2865) Result)))) false))) (do (shen.unbindv V2667 V2865) Result))) false))) (if (shen.pvar? V2666) (let A (shen.newpv V2865) (do (shen.bindv V2666 (cons vector (cons A ())) V2865) (let Result (let V2678 (shen.lazyderef (tl V2665) V2865) (if (= () V2678) (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2678) (do (shen.bindv V2678 () V2865) (let Result (let Hyp (tl V2656) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons (shen.lazyderef A V2865) ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons (cons vector (cons (shen.lazyderef A V2865) ())) ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2678 V2865) Result))) false))) (do (shen.unbindv V2666 V2865) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2679 (shen.lazyderef V2863 V2865) (if (cons? V2679) (let V2680 (shen.lazyderef (hd V2679) V2865) (if (cons? V2680) (let V2681 (shen.lazyderef (hd V2680) V2865) (if (cons? V2681) (let V2682 (shen.lazyderef (hd V2681) V2865) (if (= @s V2682) (let V2683 (shen.lazyderef (tl V2681) V2865) (if (cons? V2683) (let X (hd V2683) (let V2684 (shen.lazyderef (tl V2683) V2865) (if (cons? V2684) (let Y (hd V2684) (let V2685 (shen.lazyderef (tl V2684) V2865) (if (= () V2685) (let V2686 (shen.lazyderef (tl V2680) V2865) (if (cons? V2686) (let V2687 (shen.lazyderef (hd V2686) V2865) (if (= : V2687) (let V2688 (shen.lazyderef (tl V2686) V2865) (if (cons? V2688) (let V2689 (shen.lazyderef (hd V2688) V2865) (if (= string V2689) (let V2690 (shen.lazyderef (tl V2688) V2865) (if (= () V2690) (let Hyp (tl V2679) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons string ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2690) (do (shen.bindv V2690 () V2865) (let Result (let Hyp (tl V2679) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons string ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2690 V2865) Result))) false))) (if (shen.pvar? V2689) (do (shen.bindv V2689 string V2865) (let Result (let V2691 (shen.lazyderef (tl V2688) V2865) (if (= () V2691) (let Hyp (tl V2679) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons string ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (if (shen.pvar? V2691) (do (shen.bindv V2691 () V2865) (let Result (let Hyp (tl V2679) (do (shen.incinfs) (bind V2864 (cons (cons (shen.lazyderef X V2865) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2865) (cons : (cons string ()))) (shen.lazyderef Hyp V2865))) V2865 V2866))) (do (shen.unbindv V2691 V2865) Result))) false))) (do (shen.unbindv V2689 V2865) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2692 (shen.lazyderef V2863 V2865) (if (cons? V2692) (let X (hd V2692) (let Hyp (tl V2692) (let NewHyps (shen.newpv V2865) (do (shen.incinfs) (bind V2864 (cons (shen.lazyderef X V2865) (shen.lazyderef NewHyps V2865)) V2865 (freeze (shen.t*-hyps Hyp NewHyps V2865 V2866))))))) false)) Case)) Case)) Case)) Case)))
75
+ (defun shen.t*-hyps (V2865 V2866 V2867 V2868) (let Case (let V2617 (shen.lazyderef V2865 V2867) (if (cons? V2617) (let V2618 (shen.lazyderef (hd V2617) V2867) (if (cons? V2618) (let V2619 (shen.lazyderef (hd V2618) V2867) (if (cons? V2619) (let V2620 (shen.lazyderef (hd V2619) V2867) (if (= cons V2620) (let V2621 (shen.lazyderef (tl V2619) V2867) (if (cons? V2621) (let X (hd V2621) (let V2622 (shen.lazyderef (tl V2621) V2867) (if (cons? V2622) (let Y (hd V2622) (let V2623 (shen.lazyderef (tl V2622) V2867) (if (= () V2623) (let V2624 (shen.lazyderef (tl V2618) V2867) (if (cons? V2624) (let V2625 (shen.lazyderef (hd V2624) V2867) (if (= : V2625) (let V2626 (shen.lazyderef (tl V2624) V2867) (if (cons? V2626) (let V2627 (shen.lazyderef (hd V2626) V2867) (if (cons? V2627) (let V2628 (shen.lazyderef (hd V2627) V2867) (if (= list V2628) (let V2629 (shen.lazyderef (tl V2627) V2867) (if (cons? V2629) (let A (hd V2629) (let V2630 (shen.lazyderef (tl V2629) V2867) (if (= () V2630) (let V2631 (shen.lazyderef (tl V2626) V2867) (if (= () V2631) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2631) (do (shen.bindv V2631 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2631 V2867) Result))) false))) (if (shen.pvar? V2630) (do (shen.bindv V2630 () V2867) (let Result (let V2632 (shen.lazyderef (tl V2626) V2867) (if (= () V2632) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2632) (do (shen.bindv V2632 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2632 V2867) Result))) false))) (do (shen.unbindv V2630 V2867) Result))) false)))) (if (shen.pvar? V2629) (let A (shen.newpv V2867) (do (shen.bindv V2629 (cons A ()) V2867) (let Result (let V2633 (shen.lazyderef (tl V2626) V2867) (if (= () V2633) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2633) (do (shen.bindv V2633 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2633 V2867) Result))) false))) (do (shen.unbindv V2629 V2867) Result)))) false))) (if (shen.pvar? V2628) (do (shen.bindv V2628 list V2867) (let Result (let V2634 (shen.lazyderef (tl V2627) V2867) (if (cons? V2634) (let A (hd V2634) (let V2635 (shen.lazyderef (tl V2634) V2867) (if (= () V2635) (let V2636 (shen.lazyderef (tl V2626) V2867) (if (= () V2636) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2636) (do (shen.bindv V2636 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2636 V2867) Result))) false))) (if (shen.pvar? V2635) (do (shen.bindv V2635 () V2867) (let Result (let V2637 (shen.lazyderef (tl V2626) V2867) (if (= () V2637) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2637) (do (shen.bindv V2637 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2637 V2867) Result))) false))) (do (shen.unbindv V2635 V2867) Result))) false)))) (if (shen.pvar? V2634) (let A (shen.newpv V2867) (do (shen.bindv V2634 (cons A ()) V2867) (let Result (let V2638 (shen.lazyderef (tl V2626) V2867) (if (= () V2638) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2638) (do (shen.bindv V2638 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2638 V2867) Result))) false))) (do (shen.unbindv V2634 V2867) Result)))) false))) (do (shen.unbindv V2628 V2867) Result))) false))) (if (shen.pvar? V2627) (let A (shen.newpv V2867) (do (shen.bindv V2627 (cons list (cons A ())) V2867) (let Result (let V2639 (shen.lazyderef (tl V2626) V2867) (if (= () V2639) (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2639) (do (shen.bindv V2639 () V2867) (let Result (let Hyp (tl V2617) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons list (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2639 V2867) Result))) false))) (do (shen.unbindv V2627 V2867) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2640 (shen.lazyderef V2865 V2867) (if (cons? V2640) (let V2641 (shen.lazyderef (hd V2640) V2867) (if (cons? V2641) (let V2642 (shen.lazyderef (hd V2641) V2867) (if (cons? V2642) (let V2643 (shen.lazyderef (hd V2642) V2867) (if (= @p V2643) (let V2644 (shen.lazyderef (tl V2642) V2867) (if (cons? V2644) (let X (hd V2644) (let V2645 (shen.lazyderef (tl V2644) V2867) (if (cons? V2645) (let Y (hd V2645) (let V2646 (shen.lazyderef (tl V2645) V2867) (if (= () V2646) (let V2647 (shen.lazyderef (tl V2641) V2867) (if (cons? V2647) (let V2648 (shen.lazyderef (hd V2647) V2867) (if (= : V2648) (let V2649 (shen.lazyderef (tl V2647) V2867) (if (cons? V2649) (let V2650 (shen.lazyderef (hd V2649) V2867) (if (cons? V2650) (let A (hd V2650) (let V2651 (shen.lazyderef (tl V2650) V2867) (if (cons? V2651) (let V2652 (shen.lazyderef (hd V2651) V2867) (if (= * V2652) (let V2653 (shen.lazyderef (tl V2651) V2867) (if (cons? V2653) (let B (hd V2653) (let V2654 (shen.lazyderef (tl V2653) V2867) (if (= () V2654) (let V2655 (shen.lazyderef (tl V2649) V2867) (if (= () V2655) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2655) (do (shen.bindv V2655 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2655 V2867) Result))) false))) (if (shen.pvar? V2654) (do (shen.bindv V2654 () V2867) (let Result (let V2656 (shen.lazyderef (tl V2649) V2867) (if (= () V2656) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2656) (do (shen.bindv V2656 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2656 V2867) Result))) false))) (do (shen.unbindv V2654 V2867) Result))) false)))) (if (shen.pvar? V2653) (let B (shen.newpv V2867) (do (shen.bindv V2653 (cons B ()) V2867) (let Result (let V2657 (shen.lazyderef (tl V2649) V2867) (if (= () V2657) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2657) (do (shen.bindv V2657 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2657 V2867) Result))) false))) (do (shen.unbindv V2653 V2867) Result)))) false))) (if (shen.pvar? V2652) (do (shen.bindv V2652 * V2867) (let Result (let V2658 (shen.lazyderef (tl V2651) V2867) (if (cons? V2658) (let B (hd V2658) (let V2659 (shen.lazyderef (tl V2658) V2867) (if (= () V2659) (let V2660 (shen.lazyderef (tl V2649) V2867) (if (= () V2660) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2660) (do (shen.bindv V2660 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2660 V2867) Result))) false))) (if (shen.pvar? V2659) (do (shen.bindv V2659 () V2867) (let Result (let V2661 (shen.lazyderef (tl V2649) V2867) (if (= () V2661) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2661) (do (shen.bindv V2661 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2661 V2867) Result))) false))) (do (shen.unbindv V2659 V2867) Result))) false)))) (if (shen.pvar? V2658) (let B (shen.newpv V2867) (do (shen.bindv V2658 (cons B ()) V2867) (let Result (let V2662 (shen.lazyderef (tl V2649) V2867) (if (= () V2662) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2662) (do (shen.bindv V2662 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2662 V2867) Result))) false))) (do (shen.unbindv V2658 V2867) Result)))) false))) (do (shen.unbindv V2652 V2867) Result))) false))) (if (shen.pvar? V2651) (let B (shen.newpv V2867) (do (shen.bindv V2651 (cons * (cons B ())) V2867) (let Result (let V2663 (shen.lazyderef (tl V2649) V2867) (if (= () V2663) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2663) (do (shen.bindv V2663 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2663 V2867) Result))) false))) (do (shen.unbindv V2651 V2867) Result)))) false)))) (if (shen.pvar? V2650) (let A (shen.newpv V2867) (let B (shen.newpv V2867) (do (shen.bindv V2650 (cons A (cons * (cons B ()))) V2867) (let Result (let V2664 (shen.lazyderef (tl V2649) V2867) (if (= () V2664) (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2664) (do (shen.bindv V2664 () V2867) (let Result (let Hyp (tl V2640) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (shen.lazyderef B V2867) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2664 V2867) Result))) false))) (do (shen.unbindv V2650 V2867) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2665 (shen.lazyderef V2865 V2867) (if (cons? V2665) (let V2666 (shen.lazyderef (hd V2665) V2867) (if (cons? V2666) (let V2667 (shen.lazyderef (hd V2666) V2867) (if (cons? V2667) (let V2668 (shen.lazyderef (hd V2667) V2867) (if (= @v V2668) (let V2669 (shen.lazyderef (tl V2667) V2867) (if (cons? V2669) (let X (hd V2669) (let V2670 (shen.lazyderef (tl V2669) V2867) (if (cons? V2670) (let Y (hd V2670) (let V2671 (shen.lazyderef (tl V2670) V2867) (if (= () V2671) (let V2672 (shen.lazyderef (tl V2666) V2867) (if (cons? V2672) (let V2673 (shen.lazyderef (hd V2672) V2867) (if (= : V2673) (let V2674 (shen.lazyderef (tl V2672) V2867) (if (cons? V2674) (let V2675 (shen.lazyderef (hd V2674) V2867) (if (cons? V2675) (let V2676 (shen.lazyderef (hd V2675) V2867) (if (= vector V2676) (let V2677 (shen.lazyderef (tl V2675) V2867) (if (cons? V2677) (let A (hd V2677) (let V2678 (shen.lazyderef (tl V2677) V2867) (if (= () V2678) (let V2679 (shen.lazyderef (tl V2674) V2867) (if (= () V2679) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2679) (do (shen.bindv V2679 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2679 V2867) Result))) false))) (if (shen.pvar? V2678) (do (shen.bindv V2678 () V2867) (let Result (let V2680 (shen.lazyderef (tl V2674) V2867) (if (= () V2680) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2680) (do (shen.bindv V2680 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2680 V2867) Result))) false))) (do (shen.unbindv V2678 V2867) Result))) false)))) (if (shen.pvar? V2677) (let A (shen.newpv V2867) (do (shen.bindv V2677 (cons A ()) V2867) (let Result (let V2681 (shen.lazyderef (tl V2674) V2867) (if (= () V2681) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2681) (do (shen.bindv V2681 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2681 V2867) Result))) false))) (do (shen.unbindv V2677 V2867) Result)))) false))) (if (shen.pvar? V2676) (do (shen.bindv V2676 vector V2867) (let Result (let V2682 (shen.lazyderef (tl V2675) V2867) (if (cons? V2682) (let A (hd V2682) (let V2683 (shen.lazyderef (tl V2682) V2867) (if (= () V2683) (let V2684 (shen.lazyderef (tl V2674) V2867) (if (= () V2684) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2684) (do (shen.bindv V2684 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2684 V2867) Result))) false))) (if (shen.pvar? V2683) (do (shen.bindv V2683 () V2867) (let Result (let V2685 (shen.lazyderef (tl V2674) V2867) (if (= () V2685) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2685) (do (shen.bindv V2685 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2685 V2867) Result))) false))) (do (shen.unbindv V2683 V2867) Result))) false)))) (if (shen.pvar? V2682) (let A (shen.newpv V2867) (do (shen.bindv V2682 (cons A ()) V2867) (let Result (let V2686 (shen.lazyderef (tl V2674) V2867) (if (= () V2686) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2686) (do (shen.bindv V2686 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2686 V2867) Result))) false))) (do (shen.unbindv V2682 V2867) Result)))) false))) (do (shen.unbindv V2676 V2867) Result))) false))) (if (shen.pvar? V2675) (let A (shen.newpv V2867) (do (shen.bindv V2675 (cons vector (cons A ())) V2867) (let Result (let V2687 (shen.lazyderef (tl V2674) V2867) (if (= () V2687) (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2687) (do (shen.bindv V2687 () V2867) (let Result (let Hyp (tl V2665) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons (shen.lazyderef A V2867) ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons (cons vector (cons (shen.lazyderef A V2867) ())) ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2687 V2867) Result))) false))) (do (shen.unbindv V2675 V2867) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2688 (shen.lazyderef V2865 V2867) (if (cons? V2688) (let V2689 (shen.lazyderef (hd V2688) V2867) (if (cons? V2689) (let V2690 (shen.lazyderef (hd V2689) V2867) (if (cons? V2690) (let V2691 (shen.lazyderef (hd V2690) V2867) (if (= @s V2691) (let V2692 (shen.lazyderef (tl V2690) V2867) (if (cons? V2692) (let X (hd V2692) (let V2693 (shen.lazyderef (tl V2692) V2867) (if (cons? V2693) (let Y (hd V2693) (let V2694 (shen.lazyderef (tl V2693) V2867) (if (= () V2694) (let V2695 (shen.lazyderef (tl V2689) V2867) (if (cons? V2695) (let V2696 (shen.lazyderef (hd V2695) V2867) (if (= : V2696) (let V2697 (shen.lazyderef (tl V2695) V2867) (if (cons? V2697) (let V2698 (shen.lazyderef (hd V2697) V2867) (if (= string V2698) (let V2699 (shen.lazyderef (tl V2697) V2867) (if (= () V2699) (let Hyp (tl V2688) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons string ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2699) (do (shen.bindv V2699 () V2867) (let Result (let Hyp (tl V2688) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons string ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2699 V2867) Result))) false))) (if (shen.pvar? V2698) (do (shen.bindv V2698 string V2867) (let Result (let V2700 (shen.lazyderef (tl V2697) V2867) (if (= () V2700) (let Hyp (tl V2688) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons string ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (if (shen.pvar? V2700) (do (shen.bindv V2700 () V2867) (let Result (let Hyp (tl V2688) (do (shen.incinfs) (bind V2866 (cons (cons (shen.lazyderef X V2867) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2867) (cons : (cons string ()))) (shen.lazyderef Hyp V2867))) V2867 V2868))) (do (shen.unbindv V2700 V2867) Result))) false))) (do (shen.unbindv V2698 V2867) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2701 (shen.lazyderef V2865 V2867) (if (cons? V2701) (let X (hd V2701) (let Hyp (tl V2701) (let NewHyps (shen.newpv V2867) (do (shen.incinfs) (bind V2866 (cons (shen.lazyderef X V2867) (shen.lazyderef NewHyps V2867)) V2867 (freeze (shen.t*-hyps Hyp NewHyps V2867 V2868))))))) false)) Case)) Case)) Case)) Case)))
76
76
 
77
- (defun shen.show (V2879 V2880 V2881 V2882) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2879 V2881)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2880 V2881) 1) (do (shen.prhush "
78
- > " (stoutput)) (do (shen.pause-for-user) (thaw V2882))))))))) (true (thaw V2882))))
77
+ (defun shen.show (V2881 V2882 V2883 V2884) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2881 V2883)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2882 V2883) 1) (do (shen.prhush "
78
+ > " (stoutput)) (do (shen.pause-for-user) (thaw V2884))))))))) (true (thaw V2884))))
79
79
 
80
80
  (defun shen.line () (let Infs (inferences) (shen.prhush (cn "____________________________________________________________ " (shen.app Infs (cn " inference" (shen.app (if (= 1 Infs) "" "s") "
81
81
  ?- " shen.a)) shen.a)) (stoutput))))
82
82
 
83
- (defun shen.show-p (V2883) (cond ((and (cons? V2883) (and (cons? (tl V2883)) (and (= : (hd (tl V2883))) (and (cons? (tl (tl V2883))) (= () (tl (tl (tl V2883)))))))) (shen.prhush (shen.app (hd V2883) (cn " : " (shen.app (hd (tl (tl V2883))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V2883 "" shen.r) (stoutput)))))
83
+ (defun shen.show-p (V2885) (cond ((and (cons? V2885) (and (cons? (tl V2885)) (and (= : (hd (tl V2885))) (and (cons? (tl (tl V2885))) (= () (tl (tl (tl V2885)))))))) (shen.prhush (shen.app (hd V2885) (cn " : " (shen.app (hd (tl (tl V2885))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V2885 "" shen.r) (stoutput)))))
84
84
 
85
- (defun shen.show-assumptions (V2886 V2887) (cond ((= () V2886) shen.skip) ((cons? V2886) (do (shen.prhush (shen.app V2887 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2886)) (do (nl 1) (shen.show-assumptions (tl V2886) (+ V2887 1)))))) (true (shen.sys-error shen.show-assumptions))))
85
+ (defun shen.show-assumptions (V2888 V2889) (cond ((= () V2888) shen.skip) ((cons? V2888) (do (shen.prhush (shen.app V2889 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2888)) (do (nl 1) (shen.show-assumptions (tl V2888) (+ V2889 1)))))) (true (shen.sys-error shen.show-assumptions))))
86
86
 
87
87
  (defun shen.pause-for-user () (let Byte (read-byte (stinput)) (if (= Byte 94) (simple-error "input aborted
88
88
  ") (nl 1))))
89
89
 
90
- (defun shen.typedf? (V2888) (cons? (assoc V2888 (value shen.*signedfuncs*))))
90
+ (defun shen.typedf? (V2890) (cons? (assoc V2890 (value shen.*signedfuncs*))))
91
91
 
92
- (defun shen.sigf (V2889) (concat shen.type-signature-of- V2889))
92
+ (defun shen.sigf (V2891) (concat shen.type-signature-of- V2891))
93
93
 
94
94
  (defun shen.placeholder () (gensym &&))
95
95
 
96
- (defun shen.base (V2890 V2891 V2892 V2893) (let Case (let V2595 (shen.lazyderef V2891 V2892) (if (= number V2595) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2890 V2892)) V2892 V2893)) (if (shen.pvar? V2595) (do (shen.bindv V2595 number V2892) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2890 V2892)) V2892 V2893)) (do (shen.unbindv V2595 V2892) Result))) false))) (if (= Case false) (let Case (let V2596 (shen.lazyderef V2891 V2892) (if (= boolean V2596) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2890 V2892)) V2892 V2893)) (if (shen.pvar? V2596) (do (shen.bindv V2596 boolean V2892) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2890 V2892)) V2892 V2893)) (do (shen.unbindv V2596 V2892) Result))) false))) (if (= Case false) (let Case (let V2597 (shen.lazyderef V2891 V2892) (if (= string V2597) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2890 V2892)) V2892 V2893)) (if (shen.pvar? V2597) (do (shen.bindv V2597 string V2892) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2890 V2892)) V2892 V2893)) (do (shen.unbindv V2597 V2892) Result))) false))) (if (= Case false) (let Case (let V2598 (shen.lazyderef V2891 V2892) (if (= symbol V2598) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2890 V2892)) V2892 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2890 V2892))) V2892 V2893)))) (if (shen.pvar? V2598) (do (shen.bindv V2598 symbol V2892) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2890 V2892)) V2892 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2890 V2892))) V2892 V2893)))) (do (shen.unbindv V2598 V2892) Result))) false))) (if (= Case false) (let V2599 (shen.lazyderef V2890 V2892) (if (= () V2599) (let V2600 (shen.lazyderef V2891 V2892) (if (cons? V2600) (let V2601 (shen.lazyderef (hd V2600) V2892) (if (= list V2601) (let V2602 (shen.lazyderef (tl V2600) V2892) (if (cons? V2602) (let A (hd V2602) (let V2603 (shen.lazyderef (tl V2602) V2892) (if (= () V2603) (do (shen.incinfs) (thaw V2893)) (if (shen.pvar? V2603) (do (shen.bindv V2603 () V2892) (let Result (do (shen.incinfs) (thaw V2893)) (do (shen.unbindv V2603 V2892) Result))) false)))) (if (shen.pvar? V2602) (let A (shen.newpv V2892) (do (shen.bindv V2602 (cons A ()) V2892) (let Result (do (shen.incinfs) (thaw V2893)) (do (shen.unbindv V2602 V2892) Result)))) false))) (if (shen.pvar? V2601) (do (shen.bindv V2601 list V2892) (let Result (let V2604 (shen.lazyderef (tl V2600) V2892) (if (cons? V2604) (let A (hd V2604) (let V2605 (shen.lazyderef (tl V2604) V2892) (if (= () V2605) (do (shen.incinfs) (thaw V2893)) (if (shen.pvar? V2605) (do (shen.bindv V2605 () V2892) (let Result (do (shen.incinfs) (thaw V2893)) (do (shen.unbindv V2605 V2892) Result))) false)))) (if (shen.pvar? V2604) (let A (shen.newpv V2892) (do (shen.bindv V2604 (cons A ()) V2892) (let Result (do (shen.incinfs) (thaw V2893)) (do (shen.unbindv V2604 V2892) Result)))) false))) (do (shen.unbindv V2601 V2892) Result))) false))) (if (shen.pvar? V2600) (let A (shen.newpv V2892) (do (shen.bindv V2600 (cons list (cons A ())) V2892) (let Result (do (shen.incinfs) (thaw V2893)) (do (shen.unbindv V2600 V2892) Result)))) false))) false)) Case)) Case)) Case)) Case)))
96
+ (defun shen.base (V2892 V2893 V2894 V2895) (let Case (let V2604 (shen.lazyderef V2893 V2894) (if (= number V2604) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2892 V2894)) V2894 V2895)) (if (shen.pvar? V2604) (do (shen.bindv V2604 number V2894) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2892 V2894)) V2894 V2895)) (do (shen.unbindv V2604 V2894) Result))) false))) (if (= Case false) (let Case (let V2605 (shen.lazyderef V2893 V2894) (if (= boolean V2605) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2892 V2894)) V2894 V2895)) (if (shen.pvar? V2605) (do (shen.bindv V2605 boolean V2894) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2892 V2894)) V2894 V2895)) (do (shen.unbindv V2605 V2894) Result))) false))) (if (= Case false) (let Case (let V2606 (shen.lazyderef V2893 V2894) (if (= string V2606) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2892 V2894)) V2894 V2895)) (if (shen.pvar? V2606) (do (shen.bindv V2606 string V2894) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2892 V2894)) V2894 V2895)) (do (shen.unbindv V2606 V2894) Result))) false))) (if (= Case false) (let Case (let V2607 (shen.lazyderef V2893 V2894) (if (= symbol V2607) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2892 V2894)) V2894 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2892 V2894))) V2894 V2895)))) (if (shen.pvar? V2607) (do (shen.bindv V2607 symbol V2894) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2892 V2894)) V2894 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2892 V2894))) V2894 V2895)))) (do (shen.unbindv V2607 V2894) Result))) false))) (if (= Case false) (let V2608 (shen.lazyderef V2892 V2894) (if (= () V2608) (let V2609 (shen.lazyderef V2893 V2894) (if (cons? V2609) (let V2610 (shen.lazyderef (hd V2609) V2894) (if (= list V2610) (let V2611 (shen.lazyderef (tl V2609) V2894) (if (cons? V2611) (let A (hd V2611) (let V2612 (shen.lazyderef (tl V2611) V2894) (if (= () V2612) (do (shen.incinfs) (thaw V2895)) (if (shen.pvar? V2612) (do (shen.bindv V2612 () V2894) (let Result (do (shen.incinfs) (thaw V2895)) (do (shen.unbindv V2612 V2894) Result))) false)))) (if (shen.pvar? V2611) (let A (shen.newpv V2894) (do (shen.bindv V2611 (cons A ()) V2894) (let Result (do (shen.incinfs) (thaw V2895)) (do (shen.unbindv V2611 V2894) Result)))) false))) (if (shen.pvar? V2610) (do (shen.bindv V2610 list V2894) (let Result (let V2613 (shen.lazyderef (tl V2609) V2894) (if (cons? V2613) (let A (hd V2613) (let V2614 (shen.lazyderef (tl V2613) V2894) (if (= () V2614) (do (shen.incinfs) (thaw V2895)) (if (shen.pvar? V2614) (do (shen.bindv V2614 () V2894) (let Result (do (shen.incinfs) (thaw V2895)) (do (shen.unbindv V2614 V2894) Result))) false)))) (if (shen.pvar? V2613) (let A (shen.newpv V2894) (do (shen.bindv V2613 (cons A ()) V2894) (let Result (do (shen.incinfs) (thaw V2895)) (do (shen.unbindv V2613 V2894) Result)))) false))) (do (shen.unbindv V2610 V2894) Result))) false))) (if (shen.pvar? V2609) (let A (shen.newpv V2894) (do (shen.bindv V2609 (cons list (cons A ())) V2894) (let Result (do (shen.incinfs) (thaw V2895)) (do (shen.unbindv V2609 V2894) Result)))) false))) false)) Case)) Case)) Case)) Case)))
97
97
 
98
- (defun shen.by_hypothesis (V2894 V2895 V2896 V2897 V2898) (let Case (let V2586 (shen.lazyderef V2896 V2897) (if (cons? V2586) (let V2587 (shen.lazyderef (hd V2586) V2897) (if (cons? V2587) (let Y (hd V2587) (let V2588 (shen.lazyderef (tl V2587) V2897) (if (cons? V2588) (let V2589 (shen.lazyderef (hd V2588) V2897) (if (= : V2589) (let V2590 (shen.lazyderef (tl V2588) V2897) (if (cons? V2590) (let B (hd V2590) (let V2591 (shen.lazyderef (tl V2590) V2897) (if (= () V2591) (do (shen.incinfs) (identical V2894 Y V2897 (freeze (unify! V2895 B V2897 V2898)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2592 (shen.lazyderef V2896 V2897) (if (cons? V2592) (let Hyp (tl V2592) (do (shen.incinfs) (shen.by_hypothesis V2894 V2895 Hyp V2897 V2898))) false)) Case)))
98
+ (defun shen.by_hypothesis (V2896 V2897 V2898 V2899 V2900) (let Case (let V2595 (shen.lazyderef V2898 V2899) (if (cons? V2595) (let V2596 (shen.lazyderef (hd V2595) V2899) (if (cons? V2596) (let Y (hd V2596) (let V2597 (shen.lazyderef (tl V2596) V2899) (if (cons? V2597) (let V2598 (shen.lazyderef (hd V2597) V2899) (if (= : V2598) (let V2599 (shen.lazyderef (tl V2597) V2899) (if (cons? V2599) (let B (hd V2599) (let V2600 (shen.lazyderef (tl V2599) V2899) (if (= () V2600) (do (shen.incinfs) (identical V2896 Y V2899 (freeze (unify! V2897 B V2899 V2900)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2601 (shen.lazyderef V2898 V2899) (if (cons? V2601) (let Hyp (tl V2601) (do (shen.incinfs) (shen.by_hypothesis V2896 V2897 Hyp V2899 V2900))) false)) Case)))
99
99
 
100
- (defun shen.t*-def (V2899 V2900 V2901 V2902 V2903) (let V2580 (shen.lazyderef V2899 V2902) (if (cons? V2580) (let V2581 (shen.lazyderef (hd V2580) V2902) (if (= define V2581) (let V2582 (shen.lazyderef (tl V2580) V2902) (if (cons? V2582) (let F (hd V2582) (let X (tl V2582) (let E (shen.newpv V2902) (do (shen.incinfs) (shen.t*-defh (compile shen.<sig+rules> X (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
100
+ (defun shen.t*-def (V2901 V2902 V2903 V2904 V2905) (let V2589 (shen.lazyderef V2901 V2904) (if (cons? V2589) (let V2590 (shen.lazyderef (hd V2589) V2904) (if (= define V2590) (let V2591 (shen.lazyderef (tl V2589) V2904) (if (cons? V2591) (let F (hd V2591) (let X (tl V2591) (let E (shen.newpv V2904) (do (shen.incinfs) (shen.t*-defh (compile shen.<sig+rules> X (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
101
101
  " shen.s))) (simple-error "parse error
102
- ")))) F V2900 V2901 V2902 V2903))))) false)) false)) false)))
102
+ ")))) F V2902 V2903 V2904 V2905))))) false)) false)) false)))
103
103
 
104
- (defun shen.t*-defh (V2904 V2905 V2906 V2907 V2908 V2909) (let V2576 (shen.lazyderef V2904 V2908) (if (cons? V2576) (let Sig (hd V2576) (let Rules (tl V2576) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue Sig) V2905 V2906 V2907 Rules V2908 V2909)))) false)))
104
+ (defun shen.t*-defh (V2906 V2907 V2908 V2909 V2910 V2911) (let V2585 (shen.lazyderef V2906 V2910) (if (cons? V2585) (let Sig (hd V2585) (let Rules (tl V2585) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue-sig Sig) V2907 V2908 V2909 Rules V2910 V2911)))) false)))
105
105
 
106
- (defun shen.t*-defhh (V2910 V2911 V2912 V2913 V2914 V2915 V2916 V2917) (do (shen.incinfs) (shen.t*-rules V2915 V2911 1 V2912 (cons (cons V2912 (cons : (cons V2911 ()))) V2914) V2916 (freeze (shen.memo V2912 V2910 V2913 V2916 V2917)))))
106
+ (defun shen.t*-defhh (V2912 V2913 V2914 V2915 V2916 V2917 V2918 V2919) (do (shen.incinfs) (shen.t*-rules V2917 V2913 1 V2914 (cons (cons V2914 (cons : (cons V2913 ()))) V2916) V2918 (freeze (shen.memo V2914 V2912 V2915 V2918 V2919)))))
107
107
 
108
- (defun shen.memo (V2918 V2919 V2920 V2921 V2922) (let Jnk (shen.newpv V2921) (do (shen.incinfs) (unify! V2920 V2919 V2921 (freeze (bind Jnk (declare (shen.lazyderef V2918 V2921) (shen.lazyderef V2920 V2921)) V2921 V2922))))))
108
+ (defun shen.memo (V2920 V2921 V2922 V2923 V2924) (let Jnk (shen.newpv V2923) (do (shen.incinfs) (unify! V2922 V2921 V2923 (freeze (bind Jnk (declare (shen.lazyderef V2920 V2923) (shen.lazyderef V2922 V2923)) V2923 V2924))))))
109
109
 
110
- (defun shen.<sig+rules> (V2927) (let Result (let Parse_shen.<signature> (shen.<signature> V2927) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<rules> (shen.<rules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<rules>)) (shen.pair (hd Parse_shen.<rules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<rules>))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
110
+ (defun shen.<sig+rules> (V2929) (let Result (let Parse_shen.<signature> (shen.<signature> V2929) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<rules> (shen.<rules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<rules>)) (shen.pair (hd Parse_shen.<rules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<rules>))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
111
111
 
112
- (defun shen.ue (V2928) (cond ((and (cons? V2928) (and (cons? (tl V2928)) (and (= () (tl (tl V2928))) (= (hd V2928) protect)))) V2928) ((cons? V2928) (map shen.ue V2928)) ((variable? V2928) (concat && V2928)) (true V2928)))
112
+ (defun shen.ue (V2930) (cond ((and (cons? V2930) (and (cons? (tl V2930)) (and (= () (tl (tl V2930))) (= (hd V2930) protect)))) V2930) ((cons? V2930) (map shen.ue V2930)) ((variable? V2930) (concat && V2930)) (true V2930)))
113
113
 
114
- (defun shen.ues (V2933) (cond ((shen.ue? V2933) (cons V2933 ())) ((cons? V2933) (union (shen.ues (hd V2933)) (shen.ues (tl V2933)))) (true ())))
114
+ (defun shen.ue-sig (V2931) (cond ((cons? V2931) (map shen.ue-sig V2931)) ((variable? V2931) (concat &&& V2931)) (true V2931)))
115
115
 
116
- (defun shen.ue? (V2934) (and (symbol? V2934) (shen.ue-h? (str V2934))))
116
+ (defun shen.ues (V2936) (cond ((shen.ue? V2936) (cons V2936 ())) ((cons? V2936) (union (shen.ues (hd V2936)) (shen.ues (tl V2936)))) (true ())))
117
117
 
118
- (defun shen.ue-h? (V2941) (cond ((and (shen.+string? V2941) (and (= "&" (pos V2941 0)) (and (shen.+string? (tlstr V2941)) (= "&" (pos (tlstr V2941) 0))))) true) (true false)))
118
+ (defun shen.ue? (V2937) (and (symbol? V2937) (shen.ue-h? (str V2937))))
119
119
 
120
- (defun shen.t*-rules (V2942 V2943 V2944 V2945 V2946 V2947 V2948) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2551 (shen.lazyderef V2942 V2947) (if (= () V2551) (do (shen.incinfs) (thaw V2948)) false)) (if (= Case false) (let Case (let V2552 (shen.lazyderef V2942 V2947) (if (cons? V2552) (let V2553 (shen.lazyderef (hd V2552) V2947) (if (cons? V2553) (let V2554 (shen.lazyderef (hd V2553) V2947) (if (= () V2554) (let V2555 (shen.lazyderef (tl V2553) V2947) (if (cons? V2555) (let Action (hd V2555) (let V2556 (shen.lazyderef (tl V2555) V2947) (if (= () V2556) (let Rules (tl V2552) (let V2557 (shen.lazyderef V2943 V2947) (if (cons? V2557) (let V2558 (shen.lazyderef (hd V2557) V2947) (if (= --> V2558) (let V2559 (shen.lazyderef (tl V2557) V2947) (if (cons? V2559) (let A (hd V2559) (let V2560 (shen.lazyderef (tl V2559) V2947) (if (= () V2560) (do (shen.incinfs) (shen.t*-rule (cons () (cons (shen.ue Action) ())) A V2946 V2947 (freeze (cut Throwcontrol V2947 (freeze (shen.t*-rules Rules A (+ V2944 1) V2945 V2946 V2947 V2948)))))) false))) false)) false)) false))) false))) false)) false)) false)) false)) (if (= Case false) (let Case (let V2561 (shen.lazyderef V2942 V2947) (if (cons? V2561) (let Rule (hd V2561) (let Rules (tl V2561) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2943 V2946 V2947 (freeze (cut Throwcontrol V2947 (freeze (shen.t*-rules Rules V2943 (+ V2944 1) V2945 V2946 V2947 V2948)))))))) false)) (if (= Case false) (let Err (shen.newpv V2947) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2944 V2947) (cn " of " (shen.app (shen.lazyderef V2945 V2947) "" shen.a)) shen.a))) V2947 V2948))) Case)) Case)) Case)))))
120
+ (defun shen.ue-h? (V2944) (cond ((and (shen.+string? V2944) (and (= "&" (pos V2944 0)) (and (shen.+string? (tlstr V2944)) (= "&" (pos (tlstr V2944) 0))))) true) (true false)))
121
121
 
122
- (defun shen.t*-rule (V2949 V2950 V2951 V2952 V2953) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2533 (shen.lazyderef V2949 V2952) (if (cons? V2533) (let V2534 (shen.lazyderef (hd V2533) V2952) (if (= () V2534) (let V2535 (shen.lazyderef (tl V2533) V2952) (if (cons? V2535) (let Action (hd V2535) (let V2536 (shen.lazyderef (tl V2535) V2952) (if (= () V2536) (do (shen.incinfs) (cut Throwcontrol V2952 (freeze (shen.t*-action (shen.curry Action) V2950 V2951 V2952 V2953)))) false))) false)) false)) false)) (if (= Case false) (let V2537 (shen.lazyderef V2949 V2952) (if (cons? V2537) (let V2538 (shen.lazyderef (hd V2537) V2952) (if (cons? V2538) (let Pattern (hd V2538) (let Patterns (tl V2538) (let V2539 (shen.lazyderef (tl V2537) V2952) (if (cons? V2539) (let Action (hd V2539) (let V2540 (shen.lazyderef (tl V2539) V2952) (if (= () V2540) (let V2541 (shen.lazyderef V2950 V2952) (if (cons? V2541) (let A (hd V2541) (let V2542 (shen.lazyderef (tl V2541) V2952) (if (cons? V2542) (let V2543 (shen.lazyderef (hd V2542) V2952) (if (= --> V2543) (let V2544 (shen.lazyderef (tl V2542) V2952) (if (cons? V2544) (let B (hd V2544) (let V2545 (shen.lazyderef (tl V2544) V2952) (if (= () V2545) (do (shen.incinfs) (shen.t*-pattern Pattern A V2952 (freeze (cut Throwcontrol V2952 (freeze (shen.t*-rule (cons Patterns (cons Action ())) B (cons (cons Pattern (cons : (cons A ()))) V2951) V2952 V2953)))))) false))) false)) false)) false))) false)) false))) false)))) false)) false)) Case)))))
122
+ (defun shen.t*-rules (V2945 V2946 V2947 V2948 V2949 V2950 V2951) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2560 (shen.lazyderef V2945 V2950) (if (= () V2560) (do (shen.incinfs) (thaw V2951)) false)) (if (= Case false) (let Case (let V2561 (shen.lazyderef V2945 V2950) (if (cons? V2561) (let V2562 (shen.lazyderef (hd V2561) V2950) (if (cons? V2562) (let V2563 (shen.lazyderef (hd V2562) V2950) (if (= () V2563) (let V2564 (shen.lazyderef (tl V2562) V2950) (if (cons? V2564) (let Action (hd V2564) (let V2565 (shen.lazyderef (tl V2564) V2950) (if (= () V2565) (let Rules (tl V2561) (let V2566 (shen.lazyderef V2946 V2950) (if (cons? V2566) (let V2567 (shen.lazyderef (hd V2566) V2950) (if (= --> V2567) (let V2568 (shen.lazyderef (tl V2566) V2950) (if (cons? V2568) (let A (hd V2568) (let V2569 (shen.lazyderef (tl V2568) V2950) (if (= () V2569) (do (shen.incinfs) (shen.t*-rule (cons () (cons (shen.ue Action) ())) A V2949 V2950 (freeze (cut Throwcontrol V2950 (freeze (shen.t*-rules Rules A (+ V2947 1) V2948 V2949 V2950 V2951)))))) false))) false)) false)) false))) false))) false)) false)) false)) false)) (if (= Case false) (let Case (let V2570 (shen.lazyderef V2945 V2950) (if (cons? V2570) (let Rule (hd V2570) (let Rules (tl V2570) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2946 V2949 V2950 (freeze (cut Throwcontrol V2950 (freeze (shen.t*-rules Rules V2946 (+ V2947 1) V2948 V2949 V2950 V2951)))))))) false)) (if (= Case false) (let Err (shen.newpv V2950) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2947 V2950) (cn " of " (shen.app (shen.lazyderef V2948 V2950) "" shen.a)) shen.a))) V2950 V2951))) Case)) Case)) Case)))))
123
123
 
124
- (defun shen.t*-action (V2954 V2955 V2956 V2957 V2958) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2510 (shen.lazyderef V2954 V2957) (if (cons? V2510) (let V2511 (shen.lazyderef (hd V2510) V2957) (if (= where V2511) (let V2512 (shen.lazyderef (tl V2510) V2957) (if (cons? V2512) (let P (hd V2512) (let V2513 (shen.lazyderef (tl V2512) V2957) (if (cons? V2513) (let Action (hd V2513) (let V2514 (shen.lazyderef (tl V2513) V2957) (if (= () V2514) (do (shen.incinfs) (cut Throwcontrol V2957 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2956 V2957 (freeze (cut Throwcontrol V2957 (freeze (shen.t*-action Action V2955 (cons (cons P (cons : (cons verified ()))) V2956) V2957 V2958)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2515 (shen.lazyderef V2954 V2957) (if (cons? V2515) (let V2516 (shen.lazyderef (hd V2515) V2957) (if (= shen.choicepoint! V2516) (let V2517 (shen.lazyderef (tl V2515) V2957) (if (cons? V2517) (let V2518 (shen.lazyderef (hd V2517) V2957) (if (cons? V2518) (let V2519 (shen.lazyderef (hd V2518) V2957) (if (cons? V2519) (let V2520 (shen.lazyderef (hd V2519) V2957) (if (= fail-if V2520) (let V2521 (shen.lazyderef (tl V2519) V2957) (if (cons? V2521) (let F (hd V2521) (let V2522 (shen.lazyderef (tl V2521) V2957) (if (= () V2522) (let V2523 (shen.lazyderef (tl V2518) V2957) (if (cons? V2523) (let Action (hd V2523) (let V2524 (shen.lazyderef (tl V2523) V2957) (if (= () V2524) (let V2525 (shen.lazyderef (tl V2517) V2957) (if (= () V2525) (do (shen.incinfs) (cut Throwcontrol V2957 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2955 V2956 V2957 V2958)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2526 (shen.lazyderef V2954 V2957) (if (cons? V2526) (let V2527 (shen.lazyderef (hd V2526) V2957) (if (= shen.choicepoint! V2527) (let V2528 (shen.lazyderef (tl V2526) V2957) (if (cons? V2528) (let Action (hd V2528) (let V2529 (shen.lazyderef (tl V2528) V2957) (if (= () V2529) (do (shen.incinfs) (cut Throwcontrol V2957 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2955 V2956 V2957 V2958)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2954 (cons : (cons V2955 ()))) V2956 V2957 V2958)) Case)) Case)) Case)))))
124
+ (defun shen.t*-rule (V2952 V2953 V2954 V2955 V2956) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2542 (shen.lazyderef V2952 V2955) (if (cons? V2542) (let V2543 (shen.lazyderef (hd V2542) V2955) (if (= () V2543) (let V2544 (shen.lazyderef (tl V2542) V2955) (if (cons? V2544) (let Action (hd V2544) (let V2545 (shen.lazyderef (tl V2544) V2955) (if (= () V2545) (do (shen.incinfs) (cut Throwcontrol V2955 (freeze (shen.t*-action (shen.curry Action) V2953 V2954 V2955 V2956)))) false))) false)) false)) false)) (if (= Case false) (let V2546 (shen.lazyderef V2952 V2955) (if (cons? V2546) (let V2547 (shen.lazyderef (hd V2546) V2955) (if (cons? V2547) (let Pattern (hd V2547) (let Patterns (tl V2547) (let V2548 (shen.lazyderef (tl V2546) V2955) (if (cons? V2548) (let Action (hd V2548) (let V2549 (shen.lazyderef (tl V2548) V2955) (if (= () V2549) (let V2550 (shen.lazyderef V2953 V2955) (if (cons? V2550) (let A (hd V2550) (let V2551 (shen.lazyderef (tl V2550) V2955) (if (cons? V2551) (let V2552 (shen.lazyderef (hd V2551) V2955) (if (= --> V2552) (let V2553 (shen.lazyderef (tl V2551) V2955) (if (cons? V2553) (let B (hd V2553) (let V2554 (shen.lazyderef (tl V2553) V2955) (if (= () V2554) (do (shen.incinfs) (shen.t*-pattern Pattern A V2955 (freeze (cut Throwcontrol V2955 (freeze (shen.t*-rule (cons Patterns (cons Action ())) B (cons (cons Pattern (cons : (cons A ()))) V2954) V2955 V2956)))))) false))) false)) false)) false))) false)) false))) false)))) false)) false)) Case)))))
125
125
 
126
- (defun shen.t*-pattern (V2959 V2960 V2961 V2962) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Hyp (shen.newpv V2961) (do (shen.incinfs) (shen.tms->hyp (shen.ues V2959) Hyp V2961 (freeze (cut Throwcontrol V2961 (freeze (shen.t* (cons V2959 (cons : (cons V2960 ()))) Hyp V2961 V2962))))))))))
126
+ (defun shen.t*-action (V2957 V2958 V2959 V2960 V2961) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2519 (shen.lazyderef V2957 V2960) (if (cons? V2519) (let V2520 (shen.lazyderef (hd V2519) V2960) (if (= where V2520) (let V2521 (shen.lazyderef (tl V2519) V2960) (if (cons? V2521) (let P (hd V2521) (let V2522 (shen.lazyderef (tl V2521) V2960) (if (cons? V2522) (let Action (hd V2522) (let V2523 (shen.lazyderef (tl V2522) V2960) (if (= () V2523) (do (shen.incinfs) (cut Throwcontrol V2960 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2959 V2960 (freeze (cut Throwcontrol V2960 (freeze (shen.t*-action Action V2958 (cons (cons P (cons : (cons verified ()))) V2959) V2960 V2961)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2524 (shen.lazyderef V2957 V2960) (if (cons? V2524) (let V2525 (shen.lazyderef (hd V2524) V2960) (if (= shen.choicepoint! V2525) (let V2526 (shen.lazyderef (tl V2524) V2960) (if (cons? V2526) (let V2527 (shen.lazyderef (hd V2526) V2960) (if (cons? V2527) (let V2528 (shen.lazyderef (hd V2527) V2960) (if (cons? V2528) (let V2529 (shen.lazyderef (hd V2528) V2960) (if (= fail-if V2529) (let V2530 (shen.lazyderef (tl V2528) V2960) (if (cons? V2530) (let F (hd V2530) (let V2531 (shen.lazyderef (tl V2530) V2960) (if (= () V2531) (let V2532 (shen.lazyderef (tl V2527) V2960) (if (cons? V2532) (let Action (hd V2532) (let V2533 (shen.lazyderef (tl V2532) V2960) (if (= () V2533) (let V2534 (shen.lazyderef (tl V2526) V2960) (if (= () V2534) (do (shen.incinfs) (cut Throwcontrol V2960 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2958 V2959 V2960 V2961)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2535 (shen.lazyderef V2957 V2960) (if (cons? V2535) (let V2536 (shen.lazyderef (hd V2535) V2960) (if (= shen.choicepoint! V2536) (let V2537 (shen.lazyderef (tl V2535) V2960) (if (cons? V2537) (let Action (hd V2537) (let V2538 (shen.lazyderef (tl V2537) V2960) (if (= () V2538) (do (shen.incinfs) (cut Throwcontrol V2960 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2958 V2959 V2960 V2961)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2957 (cons : (cons V2958 ()))) V2959 V2960 V2961)) Case)) Case)) Case)))))
127
127
 
128
- (defun shen.tms->hyp (V2963 V2964 V2965 V2966) (let Case (let V2494 (shen.lazyderef V2963 V2965) (if (= () V2494) (let V2495 (shen.lazyderef V2964 V2965) (if (= () V2495) (do (shen.incinfs) (thaw V2966)) (if (shen.pvar? V2495) (do (shen.bindv V2495 () V2965) (let Result (do (shen.incinfs) (thaw V2966)) (do (shen.unbindv V2495 V2965) Result))) false))) false)) (if (= Case false) (let V2496 (shen.lazyderef V2963 V2965) (if (cons? V2496) (let Tm2491 (hd V2496) (let Tms (tl V2496) (let V2497 (shen.lazyderef V2964 V2965) (if (cons? V2497) (let V2498 (shen.lazyderef (hd V2497) V2965) (if (cons? V2498) (let Tm (hd V2498) (let V2499 (shen.lazyderef (tl V2498) V2965) (if (cons? V2499) (let V2500 (shen.lazyderef (hd V2499) V2965) (if (= : V2500) (let V2501 (shen.lazyderef (tl V2499) V2965) (if (cons? V2501) (let A (hd V2501) (let V2502 (shen.lazyderef (tl V2501) V2965) (if (= () V2502) (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (if (shen.pvar? V2502) (do (shen.bindv V2502 () V2965) (let Result (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (do (shen.unbindv V2502 V2965) Result))) false)))) (if (shen.pvar? V2501) (let A (shen.newpv V2965) (do (shen.bindv V2501 (cons A ()) V2965) (let Result (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (do (shen.unbindv V2501 V2965) Result)))) false))) (if (shen.pvar? V2500) (do (shen.bindv V2500 : V2965) (let Result (let V2503 (shen.lazyderef (tl V2499) V2965) (if (cons? V2503) (let A (hd V2503) (let V2504 (shen.lazyderef (tl V2503) V2965) (if (= () V2504) (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (if (shen.pvar? V2504) (do (shen.bindv V2504 () V2965) (let Result (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (do (shen.unbindv V2504 V2965) Result))) false)))) (if (shen.pvar? V2503) (let A (shen.newpv V2965) (do (shen.bindv V2503 (cons A ()) V2965) (let Result (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (do (shen.unbindv V2503 V2965) Result)))) false))) (do (shen.unbindv V2500 V2965) Result))) false))) (if (shen.pvar? V2499) (let A (shen.newpv V2965) (do (shen.bindv V2499 (cons : (cons A ())) V2965) (let Result (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (do (shen.unbindv V2499 V2965) Result)))) false)))) (if (shen.pvar? V2498) (let Tm (shen.newpv V2965) (let A (shen.newpv V2965) (do (shen.bindv V2498 (cons Tm (cons : (cons A ()))) V2965) (let Result (let Hyp (tl V2497) (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966))))) (do (shen.unbindv V2498 V2965) Result))))) false))) (if (shen.pvar? V2497) (let Tm (shen.newpv V2965) (let A (shen.newpv V2965) (let Hyp (shen.newpv V2965) (do (shen.bindv V2497 (cons (cons Tm (cons : (cons A ()))) Hyp) V2965) (let Result (do (shen.incinfs) (unify! Tm Tm2491 V2965 (freeze (shen.tms->hyp Tms Hyp V2965 V2966)))) (do (shen.unbindv V2497 V2965) Result)))))) false))))) false)) Case)))
128
+ (defun shen.t*-pattern (V2962 V2963 V2964 V2965) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Hyp (shen.newpv V2964) (do (shen.incinfs) (shen.tms->hyp (shen.ues V2962) Hyp V2964 (freeze (cut Throwcontrol V2964 (freeze (shen.t* (cons V2962 (cons : (cons V2963 ()))) Hyp V2964 V2965))))))))))
129
129
 
130
- (defun findall (V2967 V2968 V2969 V2970 V2971) (let B (shen.newpv V2970) (let A (shen.newpv V2970) (do (shen.incinfs) (bind A (gensym shen.a) V2970 (freeze (bind B (set (shen.lazyderef A V2970) ()) V2970 (freeze (shen.findallhelp V2967 V2968 V2969 A V2970 V2971)))))))))
130
+ (defun shen.tms->hyp (V2966 V2967 V2968 V2969) (let Case (let V2503 (shen.lazyderef V2966 V2968) (if (= () V2503) (let V2504 (shen.lazyderef V2967 V2968) (if (= () V2504) (do (shen.incinfs) (thaw V2969)) (if (shen.pvar? V2504) (do (shen.bindv V2504 () V2968) (let Result (do (shen.incinfs) (thaw V2969)) (do (shen.unbindv V2504 V2968) Result))) false))) false)) (if (= Case false) (let V2505 (shen.lazyderef V2966 V2968) (if (cons? V2505) (let Tm2500 (hd V2505) (let Tms (tl V2505) (let V2506 (shen.lazyderef V2967 V2968) (if (cons? V2506) (let V2507 (shen.lazyderef (hd V2506) V2968) (if (cons? V2507) (let Tm (hd V2507) (let V2508 (shen.lazyderef (tl V2507) V2968) (if (cons? V2508) (let V2509 (shen.lazyderef (hd V2508) V2968) (if (= : V2509) (let V2510 (shen.lazyderef (tl V2508) V2968) (if (cons? V2510) (let A (hd V2510) (let V2511 (shen.lazyderef (tl V2510) V2968) (if (= () V2511) (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (if (shen.pvar? V2511) (do (shen.bindv V2511 () V2968) (let Result (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2511 V2968) Result))) false)))) (if (shen.pvar? V2510) (let A (shen.newpv V2968) (do (shen.bindv V2510 (cons A ()) V2968) (let Result (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2510 V2968) Result)))) false))) (if (shen.pvar? V2509) (do (shen.bindv V2509 : V2968) (let Result (let V2512 (shen.lazyderef (tl V2508) V2968) (if (cons? V2512) (let A (hd V2512) (let V2513 (shen.lazyderef (tl V2512) V2968) (if (= () V2513) (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (if (shen.pvar? V2513) (do (shen.bindv V2513 () V2968) (let Result (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2513 V2968) Result))) false)))) (if (shen.pvar? V2512) (let A (shen.newpv V2968) (do (shen.bindv V2512 (cons A ()) V2968) (let Result (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2512 V2968) Result)))) false))) (do (shen.unbindv V2509 V2968) Result))) false))) (if (shen.pvar? V2508) (let A (shen.newpv V2968) (do (shen.bindv V2508 (cons : (cons A ())) V2968) (let Result (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2508 V2968) Result)))) false)))) (if (shen.pvar? V2507) (let Tm (shen.newpv V2968) (let A (shen.newpv V2968) (do (shen.bindv V2507 (cons Tm (cons : (cons A ()))) V2968) (let Result (let Hyp (tl V2506) (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2507 V2968) Result))))) false))) (if (shen.pvar? V2506) (let Tm (shen.newpv V2968) (let A (shen.newpv V2968) (let Hyp (shen.newpv V2968) (do (shen.bindv V2506 (cons (cons Tm (cons : (cons A ()))) Hyp) V2968) (let Result (do (shen.incinfs) (unify! Tm Tm2500 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969)))) (do (shen.unbindv V2506 V2968) Result)))))) false))))) false)) Case)))
131
131
 
132
- (defun shen.findallhelp (V2972 V2973 V2974 V2975 V2976 V2977) (let Case (do (shen.incinfs) (call V2973 V2976 (freeze (shen.remember V2975 V2972 V2976 (freeze (fwhen false V2976 V2977)))))) (if (= Case false) (do (shen.incinfs) (bind V2974 (value (shen.lazyderef V2975 V2976)) V2976 V2977)) Case)))
132
+ (defun findall (V2970 V2971 V2972 V2973 V2974) (let B (shen.newpv V2973) (let A (shen.newpv V2973) (do (shen.incinfs) (bind A (gensym shen.a) V2973 (freeze (bind B (set (shen.lazyderef A V2973) ()) V2973 (freeze (shen.findallhelp V2970 V2971 V2972 A V2973 V2974)))))))))
133
133
 
134
- (defun shen.remember (V2978 V2979 V2980 V2981) (let B (shen.newpv V2980) (do (shen.incinfs) (bind B (set (shen.deref V2978 V2980) (cons (shen.deref V2979 V2980) (value (shen.deref V2978 V2980)))) V2980 V2981))))
134
+ (defun shen.findallhelp (V2975 V2976 V2977 V2978 V2979 V2980) (let Case (do (shen.incinfs) (call V2976 V2979 (freeze (shen.remember V2978 V2975 V2979 (freeze (fwhen false V2979 V2980)))))) (if (= Case false) (do (shen.incinfs) (bind V2977 (value (shen.lazyderef V2978 V2979)) V2979 V2980)) Case)))
135
135
 
136
- (defun shen.t*-defcc (V2982 V2983 V2984 V2985 V2986) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2467 (shen.lazyderef V2982 V2985) (if (cons? V2467) (let V2468 (shen.lazyderef (hd V2467) V2985) (if (= defcc V2468) (let V2469 (shen.lazyderef (tl V2467) V2985) (if (cons? V2469) (let F (hd V2469) (let V2470 (shen.lazyderef (tl V2469) V2985) (if (cons? V2470) (let V2471 (shen.lazyderef (hd V2470) V2985) (if (= { V2471) (let V2472 (shen.lazyderef (tl V2470) V2985) (if (cons? V2472) (let V2473 (shen.lazyderef (hd V2472) V2985) (if (cons? V2473) (let V2474 (shen.lazyderef (hd V2473) V2985) (if (= list V2474) (let V2475 (shen.lazyderef (tl V2473) V2985) (if (cons? V2475) (let A (hd V2475) (let V2476 (shen.lazyderef (tl V2475) V2985) (if (= () V2476) (let V2477 (shen.lazyderef (tl V2472) V2985) (if (cons? V2477) (let V2478 (shen.lazyderef (hd V2477) V2985) (if (= ==> V2478) (let V2479 (shen.lazyderef (tl V2477) V2985) (if (cons? V2479) (let B (hd V2479) (let V2480 (shen.lazyderef (tl V2479) V2985) (if (cons? V2480) (let V2481 (shen.lazyderef (hd V2480) V2985) (if (= } V2481) (let Rest (tl V2480) (let Rest& (shen.newpv V2985) (let Rest&& (shen.newpv V2985) (let Rules (shen.newpv V2985) (let ListA&& (shen.newpv V2985) (let B&& (shen.newpv V2985) (let Sig (shen.newpv V2985) (let Declare (shen.newpv V2985) (do (shen.incinfs) (bind Sig (shen.ue (cons (cons list (cons (shen.lazyderef A V2985) ())) (cons ==> (cons (shen.lazyderef B V2985) ())))) V2985 (freeze (bind ListA&& (hd (shen.lazyderef Sig V2985)) V2985 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V2985)))) V2985 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V2985)) V2985 (freeze (bind Rest&& (shen.ue (shen.lazyderef Rest& V2985)) V2985 (freeze (shen.get-rules Rules Rest&& V2985 (freeze (cut Throwcontrol V2985 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V2984) 1 V2985 (freeze (unify V2983 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V2985 (freeze (bind Declare (declare (shen.lazyderef F V2985) (cons (cons list (cons (shen.lazyderef A V2985) ())) (cons ==> (cons (shen.lazyderef B V2985) ())))) V2985 V2986)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
136
+ (defun shen.remember (V2981 V2982 V2983 V2984) (let B (shen.newpv V2983) (do (shen.incinfs) (bind B (set (shen.deref V2981 V2983) (cons (shen.deref V2982 V2983) (value (shen.deref V2981 V2983)))) V2983 V2984))))
137
137
 
138
- (defun shen.plug-wildcards (V2987) (cond ((cons? V2987) (map shen.plug-wildcards V2987)) ((= V2987 _) (gensym (intern "X"))) (true V2987)))
138
+ (defun shen.t*-defcc (V2985 V2986 V2987 V2988 V2989) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2476 (shen.lazyderef V2985 V2988) (if (cons? V2476) (let V2477 (shen.lazyderef (hd V2476) V2988) (if (= defcc V2477) (let V2478 (shen.lazyderef (tl V2476) V2988) (if (cons? V2478) (let F (hd V2478) (let V2479 (shen.lazyderef (tl V2478) V2988) (if (cons? V2479) (let V2480 (shen.lazyderef (hd V2479) V2988) (if (= { V2480) (let V2481 (shen.lazyderef (tl V2479) V2988) (if (cons? V2481) (let V2482 (shen.lazyderef (hd V2481) V2988) (if (cons? V2482) (let V2483 (shen.lazyderef (hd V2482) V2988) (if (= list V2483) (let V2484 (shen.lazyderef (tl V2482) V2988) (if (cons? V2484) (let A (hd V2484) (let V2485 (shen.lazyderef (tl V2484) V2988) (if (= () V2485) (let V2486 (shen.lazyderef (tl V2481) V2988) (if (cons? V2486) (let V2487 (shen.lazyderef (hd V2486) V2988) (if (= ==> V2487) (let V2488 (shen.lazyderef (tl V2486) V2988) (if (cons? V2488) (let B (hd V2488) (let V2489 (shen.lazyderef (tl V2488) V2988) (if (cons? V2489) (let V2490 (shen.lazyderef (hd V2489) V2988) (if (= } V2490) (let Rest (tl V2489) (let Rest& (shen.newpv V2988) (let Rest&& (shen.newpv V2988) (let Rules (shen.newpv V2988) (let ListA&& (shen.newpv V2988) (let B&& (shen.newpv V2988) (let Sig (shen.newpv V2988) (let Declare (shen.newpv V2988) (do (shen.incinfs) (bind Sig (shen.ue (cons (cons list (cons (shen.lazyderef A V2988) ())) (cons ==> (cons (shen.lazyderef B V2988) ())))) V2988 (freeze (bind ListA&& (hd (shen.lazyderef Sig V2988)) V2988 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V2988)))) V2988 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V2988)) V2988 (freeze (bind Rest&& (shen.ue (shen.lazyderef Rest& V2988)) V2988 (freeze (shen.get-rules Rules Rest&& V2988 (freeze (cut Throwcontrol V2988 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V2987) 1 V2988 (freeze (unify V2986 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V2988 (freeze (bind Declare (declare (shen.lazyderef F V2988) (cons (cons list (cons (shen.lazyderef A V2988) ())) (cons ==> (cons (shen.lazyderef B V2988) ())))) V2988 V2989)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
139
139
 
140
- (defun shen.get-rules (V2988 V2989 V2990 V2991) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2460 (shen.lazyderef V2988 V2990) (if (= () V2460) (let V2461 (shen.lazyderef V2989 V2990) (if (= () V2461) (do (shen.incinfs) (cut Throwcontrol V2990 V2991)) false)) (if (shen.pvar? V2460) (do (shen.bindv V2460 () V2990) (let Result (let V2462 (shen.lazyderef V2989 V2990) (if (= () V2462) (do (shen.incinfs) (cut Throwcontrol V2990 V2991)) false)) (do (shen.unbindv V2460 V2990) Result))) false))) (if (= Case false) (let V2463 (shen.lazyderef V2988 V2990) (if (cons? V2463) (let Rule (hd V2463) (let Rules (tl V2463) (let Other (shen.newpv V2990) (do (shen.incinfs) (shen.first-rule V2989 Rule Other V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.get-rules Rules Other V2990 V2991))))))))) (if (shen.pvar? V2463) (let Rule (shen.newpv V2990) (let Rules (shen.newpv V2990) (do (shen.bindv V2463 (cons Rule Rules) V2990) (let Result (let Other (shen.newpv V2990) (do (shen.incinfs) (shen.first-rule V2989 Rule Other V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.get-rules Rules Other V2990 V2991))))))) (do (shen.unbindv V2463 V2990) Result))))) false))) Case)))))
140
+ (defun shen.plug-wildcards (V2990) (cond ((cons? V2990) (map shen.plug-wildcards V2990)) ((= V2990 _) (gensym (intern "X"))) (true V2990)))
141
141
 
142
- (defun shen.first-rule (V2992 V2993 V2994 V2995 V2996) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2453 (shen.lazyderef V2992 V2995) (if (cons? V2453) (let V2454 (shen.lazyderef (hd V2453) V2995) (if (= ; V2454) (let Other2448 (tl V2453) (let V2455 (shen.lazyderef V2993 V2995) (if (= () V2455) (do (shen.incinfs) (unify! V2994 Other2448 V2995 (freeze (cut Throwcontrol V2995 V2996)))) (if (shen.pvar? V2455) (do (shen.bindv V2455 () V2995) (let Result (do (shen.incinfs) (unify! V2994 Other2448 V2995 (freeze (cut Throwcontrol V2995 V2996)))) (do (shen.unbindv V2455 V2995) Result))) false)))) false)) false)) (if (= Case false) (let V2456 (shen.lazyderef V2992 V2995) (if (cons? V2456) (let X2449 (hd V2456) (let Rest (tl V2456) (let V2457 (shen.lazyderef V2993 V2995) (if (cons? V2457) (let X (hd V2457) (let Rule (tl V2457) (do (shen.incinfs) (unify! X X2449 V2995 (freeze (shen.first-rule Rest Rule V2994 V2995 V2996)))))) (if (shen.pvar? V2457) (let X (shen.newpv V2995) (let Rule (shen.newpv V2995) (do (shen.bindv V2457 (cons X Rule) V2995) (let Result (do (shen.incinfs) (unify! X X2449 V2995 (freeze (shen.first-rule Rest Rule V2994 V2995 V2996)))) (do (shen.unbindv V2457 V2995) Result))))) false))))) false)) Case)))))
142
+ (defun shen.get-rules (V2991 V2992 V2993 V2994) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2469 (shen.lazyderef V2991 V2993) (if (= () V2469) (let V2470 (shen.lazyderef V2992 V2993) (if (= () V2470) (do (shen.incinfs) (cut Throwcontrol V2993 V2994)) false)) (if (shen.pvar? V2469) (do (shen.bindv V2469 () V2993) (let Result (let V2471 (shen.lazyderef V2992 V2993) (if (= () V2471) (do (shen.incinfs) (cut Throwcontrol V2993 V2994)) false)) (do (shen.unbindv V2469 V2993) Result))) false))) (if (= Case false) (let V2472 (shen.lazyderef V2991 V2993) (if (cons? V2472) (let Rule (hd V2472) (let Rules (tl V2472) (let Other (shen.newpv V2993) (do (shen.incinfs) (shen.first-rule V2992 Rule Other V2993 (freeze (cut Throwcontrol V2993 (freeze (shen.get-rules Rules Other V2993 V2994))))))))) (if (shen.pvar? V2472) (let Rule (shen.newpv V2993) (let Rules (shen.newpv V2993) (do (shen.bindv V2472 (cons Rule Rules) V2993) (let Result (let Other (shen.newpv V2993) (do (shen.incinfs) (shen.first-rule V2992 Rule Other V2993 (freeze (cut Throwcontrol V2993 (freeze (shen.get-rules Rules Other V2993 V2994))))))) (do (shen.unbindv V2472 V2993) Result))))) false))) Case)))))
143
143
 
144
- (defun shen.tc-rules (V2997 V2998 V2999 V3000 V3001 V3002 V3003 V3004) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2442 (shen.lazyderef V2998 V3003) (if (= () V2442) (do (shen.incinfs) (thaw V3004)) false)) (if (= Case false) (let V2443 (shen.lazyderef V2998 V3003) (if (cons? V2443) (let Rule (hd V2443) (let Rules (tl V2443) (let V2444 (shen.lazyderef V2999 V3003) (if (cons? V2444) (let V2445 (shen.lazyderef (hd V2444) V3003) (if (= list V2445) (let V2446 (shen.lazyderef (tl V2444) V3003) (if (cons? V2446) (let A (hd V2446) (let V2447 (shen.lazyderef (tl V2446) V3003) (if (= () V2447) (let M (shen.newpv V3003) (do (shen.incinfs) (shen.tc-rule V2997 Rule A V3000 V3001 V3002 V3003 (freeze (bind M (+ (shen.deref V3002 V3003) 1) V3003 (freeze (cut Throwcontrol V3003 (freeze (shen.tc-rules V2997 Rules (cons list (cons A ())) V3000 V3001 M V3003 V3004))))))))) false))) false)) false)) false)))) false)) Case)))))
144
+ (defun shen.first-rule (V2995 V2996 V2997 V2998 V2999) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2462 (shen.lazyderef V2995 V2998) (if (cons? V2462) (let V2463 (shen.lazyderef (hd V2462) V2998) (if (= ; V2463) (let Other2457 (tl V2462) (let V2464 (shen.lazyderef V2996 V2998) (if (= () V2464) (do (shen.incinfs) (unify! V2997 Other2457 V2998 (freeze (cut Throwcontrol V2998 V2999)))) (if (shen.pvar? V2464) (do (shen.bindv V2464 () V2998) (let Result (do (shen.incinfs) (unify! V2997 Other2457 V2998 (freeze (cut Throwcontrol V2998 V2999)))) (do (shen.unbindv V2464 V2998) Result))) false)))) false)) false)) (if (= Case false) (let V2465 (shen.lazyderef V2995 V2998) (if (cons? V2465) (let X2458 (hd V2465) (let Rest (tl V2465) (let V2466 (shen.lazyderef V2996 V2998) (if (cons? V2466) (let X (hd V2466) (let Rule (tl V2466) (do (shen.incinfs) (unify! X X2458 V2998 (freeze (shen.first-rule Rest Rule V2997 V2998 V2999)))))) (if (shen.pvar? V2466) (let X (shen.newpv V2998) (let Rule (shen.newpv V2998) (do (shen.bindv V2466 (cons X Rule) V2998) (let Result (do (shen.incinfs) (unify! X X2458 V2998 (freeze (shen.first-rule Rest Rule V2997 V2998 V2999)))) (do (shen.unbindv V2466 V2998) Result))))) false))))) false)) Case)))))
145
145
 
146
- (defun shen.tc-rule (V3005 V3006 V3007 V3008 V3009 V3010 V3011 V3012) (let Case (do (shen.incinfs) (shen.check-defcc-rule V3006 V3007 V3008 V3009 V3011 V3012)) (if (= Case false) (let Err (shen.newpv V3011) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V3010 V3011) (cn " of " (shen.app (shen.lazyderef V3005 V3011) "" shen.a)) shen.a))) V3011 V3012))) Case)))
146
+ (defun shen.tc-rules (V3000 V3001 V3002 V3003 V3004 V3005 V3006 V3007) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2451 (shen.lazyderef V3001 V3006) (if (= () V2451) (do (shen.incinfs) (thaw V3007)) false)) (if (= Case false) (let V2452 (shen.lazyderef V3001 V3006) (if (cons? V2452) (let Rule (hd V2452) (let Rules (tl V2452) (let V2453 (shen.lazyderef V3002 V3006) (if (cons? V2453) (let V2454 (shen.lazyderef (hd V2453) V3006) (if (= list V2454) (let V2455 (shen.lazyderef (tl V2453) V3006) (if (cons? V2455) (let A (hd V2455) (let V2456 (shen.lazyderef (tl V2455) V3006) (if (= () V2456) (let M (shen.newpv V3006) (do (shen.incinfs) (shen.tc-rule V3000 Rule A V3003 V3004 V3005 V3006 (freeze (bind M (+ (shen.deref V3005 V3006) 1) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.tc-rules V3000 Rules (cons list (cons A ())) V3003 V3004 M V3006 V3007))))))))) false))) false)) false)) false)))) false)) Case)))))
147
147
 
148
- (defun shen.check-defcc-rule (V3013 V3014 V3015 V3016 V3017 V3018) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V3017) (let Semantics (shen.newpv V3017) (let SynHyps (shen.newpv V3017) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V3013 V3017 (freeze (cut Throwcontrol V3017 (freeze (shen.syntax-hyps Syntax V3016 SynHyps V3014 V3017 (freeze (cut Throwcontrol V3017 (freeze (shen.syntax-check Syntax V3014 SynHyps V3017 (freeze (cut Throwcontrol V3017 (freeze (shen.semantics-check Semantics V3015 SynHyps V3017 V3018))))))))))))))))))))
148
+ (defun shen.tc-rule (V3008 V3009 V3010 V3011 V3012 V3013 V3014 V3015) (let Case (do (shen.incinfs) (shen.check-defcc-rule V3009 V3010 V3011 V3012 V3014 V3015)) (if (= Case false) (let Err (shen.newpv V3014) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V3013 V3014) (cn " of " (shen.app (shen.lazyderef V3008 V3014) "" shen.a)) shen.a))) V3014 V3015))) Case)))
149
149
 
150
- (defun shen.syntax-hyps (V3019 V3020 V3021 V3022 V3023 V3024) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2415 (shen.lazyderef V3019 V3023) (if (= () V2415) (do (shen.incinfs) (unify! V3021 V3020 V3023 V3024)) false)) (if (= Case false) (let Case (let V2416 (shen.lazyderef V3019 V3023) (if (cons? V2416) (let X2409 (hd V2416) (let Y (tl V2416) (let V2417 (shen.lazyderef V3021 V3023) (if (cons? V2417) (let V2418 (shen.lazyderef (hd V2417) V3023) (if (cons? V2418) (let X (hd V2418) (let V2419 (shen.lazyderef (tl V2418) V3023) (if (cons? V2419) (let V2420 (shen.lazyderef (hd V2419) V3023) (if (= : V2420) (let V2421 (shen.lazyderef (tl V2419) V3023) (if (cons? V2421) (let A2410 (hd V2421) (let V2422 (shen.lazyderef (tl V2421) V3023) (if (= () V2422) (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (if (shen.pvar? V2422) (do (shen.bindv V2422 () V3023) (let Result (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (do (shen.unbindv V2422 V3023) Result))) false)))) (if (shen.pvar? V2421) (let A2410 (shen.newpv V3023) (do (shen.bindv V2421 (cons A2410 ()) V3023) (let Result (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (do (shen.unbindv V2421 V3023) Result)))) false))) (if (shen.pvar? V2420) (do (shen.bindv V2420 : V3023) (let Result (let V2423 (shen.lazyderef (tl V2419) V3023) (if (cons? V2423) (let A2410 (hd V2423) (let V2424 (shen.lazyderef (tl V2423) V3023) (if (= () V2424) (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (if (shen.pvar? V2424) (do (shen.bindv V2424 () V3023) (let Result (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (do (shen.unbindv V2424 V3023) Result))) false)))) (if (shen.pvar? V2423) (let A2410 (shen.newpv V3023) (do (shen.bindv V2423 (cons A2410 ()) V3023) (let Result (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (do (shen.unbindv V2423 V3023) Result)))) false))) (do (shen.unbindv V2420 V3023) Result))) false))) (if (shen.pvar? V2419) (let A2410 (shen.newpv V3023) (do (shen.bindv V2419 (cons : (cons A2410 ())) V3023) (let Result (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (do (shen.unbindv V2419 V3023) Result)))) false)))) (if (shen.pvar? V2418) (let X (shen.newpv V3023) (let A2410 (shen.newpv V3023) (do (shen.bindv V2418 (cons X (cons : (cons A2410 ()))) V3023) (let Result (let SynHyps (tl V2417) (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024))))))))))) (do (shen.unbindv V2418 V3023) Result))))) false))) (if (shen.pvar? V2417) (let X (shen.newpv V3023) (let A2410 (shen.newpv V3023) (let SynHyps (shen.newpv V3023) (do (shen.bindv V2417 (cons (cons X (cons : (cons A2410 ()))) SynHyps) V3023) (let Result (do (shen.incinfs) (unify! V3022 A2410 V3023 (freeze (unify! X X2409 V3023 (freeze (fwhen (shen.ue? (shen.deref X V3023)) V3023 (freeze (cut Throwcontrol V3023 (freeze (shen.syntax-hyps Y V3020 SynHyps V3022 V3023 V3024)))))))))) (do (shen.unbindv V2417 V3023) Result)))))) false))))) false)) (if (= Case false) (let V2425 (shen.lazyderef V3019 V3023) (if (cons? V2425) (let Y (tl V2425) (do (shen.incinfs) (shen.syntax-hyps Y V3020 V3021 V3022 V3023 V3024))) false)) Case)) Case)))))
150
+ (defun shen.check-defcc-rule (V3016 V3017 V3018 V3019 V3020 V3021) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V3020) (let Semantics (shen.newpv V3020) (let SynHyps (shen.newpv V3020) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V3016 V3020 (freeze (cut Throwcontrol V3020 (freeze (shen.syntax-hyps Syntax V3019 SynHyps V3017 V3020 (freeze (cut Throwcontrol V3020 (freeze (shen.syntax-check Syntax V3017 SynHyps V3020 (freeze (cut Throwcontrol V3020 (freeze (shen.semantics-check Semantics V3018 SynHyps V3020 V3021))))))))))))))))))))
151
151
 
152
- (defun shen.get-syntax+semantics (V3025 V3026 V3027 V3028 V3029) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2381 (shen.lazyderef V3025 V3028) (if (= () V2381) (let V2382 (shen.lazyderef V3027 V3028) (if (cons? V2382) (let V2383 (shen.lazyderef (hd V2382) V3028) (if (= := V2383) (let V2384 (shen.lazyderef (tl V2382) V3028) (if (cons? V2384) (let Semantics (hd V2384) (let V2385 (shen.lazyderef (tl V2384) V3028) (if (= () V2385) (do (shen.incinfs) (cut Throwcontrol V3028 (freeze (bind V3026 (shen.lazyderef Semantics V3028) V3028 V3029)))) false))) false)) false)) false)) (if (shen.pvar? V2381) (do (shen.bindv V2381 () V3028) (let Result (let V2386 (shen.lazyderef V3027 V3028) (if (cons? V2386) (let V2387 (shen.lazyderef (hd V2386) V3028) (if (= := V2387) (let V2388 (shen.lazyderef (tl V2386) V3028) (if (cons? V2388) (let Semantics (hd V2388) (let V2389 (shen.lazyderef (tl V2388) V3028) (if (= () V2389) (do (shen.incinfs) (cut Throwcontrol V3028 (freeze (bind V3026 (shen.lazyderef Semantics V3028) V3028 V3029)))) false))) false)) false)) false)) (do (shen.unbindv V2381 V3028) Result))) false))) (if (= Case false) (let Case (let V2390 (shen.lazyderef V3025 V3028) (if (= () V2390) (let V2391 (shen.lazyderef V3027 V3028) (if (cons? V2391) (let V2392 (shen.lazyderef (hd V2391) V3028) (if (= := V2392) (let V2393 (shen.lazyderef (tl V2391) V3028) (if (cons? V2393) (let Semantics (hd V2393) (let V2394 (shen.lazyderef (tl V2393) V3028) (if (cons? V2394) (let V2395 (shen.lazyderef (hd V2394) V3028) (if (= where V2395) (let V2396 (shen.lazyderef (tl V2394) V3028) (if (cons? V2396) (let G (hd V2396) (let V2397 (shen.lazyderef (tl V2396) V3028) (if (= () V2397) (do (shen.incinfs) (cut Throwcontrol V3028 (freeze (bind V3026 (cons where (cons (shen.lazyderef G V3028) (cons (shen.lazyderef Semantics V3028) ()))) V3028 V3029)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2390) (do (shen.bindv V2390 () V3028) (let Result (let V2398 (shen.lazyderef V3027 V3028) (if (cons? V2398) (let V2399 (shen.lazyderef (hd V2398) V3028) (if (= := V2399) (let V2400 (shen.lazyderef (tl V2398) V3028) (if (cons? V2400) (let Semantics (hd V2400) (let V2401 (shen.lazyderef (tl V2400) V3028) (if (cons? V2401) (let V2402 (shen.lazyderef (hd V2401) V3028) (if (= where V2402) (let V2403 (shen.lazyderef (tl V2401) V3028) (if (cons? V2403) (let G (hd V2403) (let V2404 (shen.lazyderef (tl V2403) V3028) (if (= () V2404) (do (shen.incinfs) (cut Throwcontrol V3028 (freeze (bind V3026 (cons where (cons (shen.lazyderef G V3028) (cons (shen.lazyderef Semantics V3028) ()))) V3028 V3029)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2390 V3028) Result))) false))) (if (= Case false) (let V2405 (shen.lazyderef V3025 V3028) (if (cons? V2405) (let X2377 (hd V2405) (let Syntax (tl V2405) (let V2406 (shen.lazyderef V3027 V3028) (if (cons? V2406) (let X (hd V2406) (let Rule (tl V2406) (do (shen.incinfs) (unify! X X2377 V3028 (freeze (shen.get-syntax+semantics Syntax V3026 Rule V3028 V3029)))))) false)))) (if (shen.pvar? V2405) (let X2377 (shen.newpv V3028) (let Syntax (shen.newpv V3028) (do (shen.bindv V2405 (cons X2377 Syntax) V3028) (let Result (let V2407 (shen.lazyderef V3027 V3028) (if (cons? V2407) (let X (hd V2407) (let Rule (tl V2407) (do (shen.incinfs) (unify! X X2377 V3028 (freeze (shen.get-syntax+semantics Syntax V3026 Rule V3028 V3029)))))) false)) (do (shen.unbindv V2405 V3028) Result))))) false))) Case)) Case)))))
152
+ (defun shen.syntax-hyps (V3022 V3023 V3024 V3025 V3026 V3027) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2424 (shen.lazyderef V3022 V3026) (if (= () V2424) (do (shen.incinfs) (unify! V3024 V3023 V3026 V3027)) false)) (if (= Case false) (let Case (let V2425 (shen.lazyderef V3022 V3026) (if (cons? V2425) (let X2418 (hd V2425) (let Y (tl V2425) (let V2426 (shen.lazyderef V3024 V3026) (if (cons? V2426) (let V2427 (shen.lazyderef (hd V2426) V3026) (if (cons? V2427) (let X (hd V2427) (let V2428 (shen.lazyderef (tl V2427) V3026) (if (cons? V2428) (let V2429 (shen.lazyderef (hd V2428) V3026) (if (= : V2429) (let V2430 (shen.lazyderef (tl V2428) V3026) (if (cons? V2430) (let A2419 (hd V2430) (let V2431 (shen.lazyderef (tl V2430) V3026) (if (= () V2431) (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (if (shen.pvar? V2431) (do (shen.bindv V2431 () V3026) (let Result (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2431 V3026) Result))) false)))) (if (shen.pvar? V2430) (let A2419 (shen.newpv V3026) (do (shen.bindv V2430 (cons A2419 ()) V3026) (let Result (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2430 V3026) Result)))) false))) (if (shen.pvar? V2429) (do (shen.bindv V2429 : V3026) (let Result (let V2432 (shen.lazyderef (tl V2428) V3026) (if (cons? V2432) (let A2419 (hd V2432) (let V2433 (shen.lazyderef (tl V2432) V3026) (if (= () V2433) (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (if (shen.pvar? V2433) (do (shen.bindv V2433 () V3026) (let Result (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2433 V3026) Result))) false)))) (if (shen.pvar? V2432) (let A2419 (shen.newpv V3026) (do (shen.bindv V2432 (cons A2419 ()) V3026) (let Result (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2432 V3026) Result)))) false))) (do (shen.unbindv V2429 V3026) Result))) false))) (if (shen.pvar? V2428) (let A2419 (shen.newpv V3026) (do (shen.bindv V2428 (cons : (cons A2419 ())) V3026) (let Result (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2428 V3026) Result)))) false)))) (if (shen.pvar? V2427) (let X (shen.newpv V3026) (let A2419 (shen.newpv V3026) (do (shen.bindv V2427 (cons X (cons : (cons A2419 ()))) V3026) (let Result (let SynHyps (tl V2426) (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2427 V3026) Result))))) false))) (if (shen.pvar? V2426) (let X (shen.newpv V3026) (let A2419 (shen.newpv V3026) (let SynHyps (shen.newpv V3026) (do (shen.bindv V2426 (cons (cons X (cons : (cons A2419 ()))) SynHyps) V3026) (let Result (do (shen.incinfs) (unify! V3025 A2419 V3026 (freeze (unify! X X2418 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027)))))))))) (do (shen.unbindv V2426 V3026) Result)))))) false))))) false)) (if (= Case false) (let V2434 (shen.lazyderef V3022 V3026) (if (cons? V2434) (let Y (tl V2434) (do (shen.incinfs) (shen.syntax-hyps Y V3023 V3024 V3025 V3026 V3027))) false)) Case)) Case)))))
153
153
 
154
- (defun shen.syntax-check (V3030 V3031 V3032 V3033 V3034) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2374 (shen.lazyderef V3030 V3033) (if (= () V2374) (do (shen.incinfs) (thaw V3034)) false)) (if (= Case false) (let Case (let V2375 (shen.lazyderef V3030 V3033) (if (cons? V2375) (let X (hd V2375) (let Syntax (tl V2375) (let C (shen.newpv V3033) (let X&& (shen.newpv V3033) (let B (shen.newpv V3033) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V3033)) V3033 (freeze (cut Throwcontrol V3033 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V3032 V3033 (freeze (cut Throwcontrol V3033 (freeze (bind X&& (concat && (shen.lazyderef X V3033)) V3033 (freeze (cut Throwcontrol V3033 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V3031 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V3032) V3033 (freeze (cut Throwcontrol V3033 (freeze (shen.syntax-check Syntax V3031 V3032 V3033 V3034))))))))))))))))))))))) false)) (if (= Case false) (let V2376 (shen.lazyderef V3030 V3033) (if (cons? V2376) (let X (hd V2376) (let Syntax (tl V2376) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V3031 ()))) V3032 V3033 (freeze (cut Throwcontrol V3033 (freeze (shen.syntax-check Syntax V3031 V3032 V3033 V3034)))))))) false)) Case)) Case)))))
154
+ (defun shen.get-syntax+semantics (V3028 V3029 V3030 V3031 V3032) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2390 (shen.lazyderef V3028 V3031) (if (= () V2390) (let V2391 (shen.lazyderef V3030 V3031) (if (cons? V2391) (let V2392 (shen.lazyderef (hd V2391) V3031) (if (= := V2392) (let V2393 (shen.lazyderef (tl V2391) V3031) (if (cons? V2393) (let Semantics (hd V2393) (let V2394 (shen.lazyderef (tl V2393) V3031) (if (= () V2394) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (shen.lazyderef Semantics V3031) V3031 V3032)))) false))) false)) false)) false)) (if (shen.pvar? V2390) (do (shen.bindv V2390 () V3031) (let Result (let V2395 (shen.lazyderef V3030 V3031) (if (cons? V2395) (let V2396 (shen.lazyderef (hd V2395) V3031) (if (= := V2396) (let V2397 (shen.lazyderef (tl V2395) V3031) (if (cons? V2397) (let Semantics (hd V2397) (let V2398 (shen.lazyderef (tl V2397) V3031) (if (= () V2398) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (shen.lazyderef Semantics V3031) V3031 V3032)))) false))) false)) false)) false)) (do (shen.unbindv V2390 V3031) Result))) false))) (if (= Case false) (let Case (let V2399 (shen.lazyderef V3028 V3031) (if (= () V2399) (let V2400 (shen.lazyderef V3030 V3031) (if (cons? V2400) (let V2401 (shen.lazyderef (hd V2400) V3031) (if (= := V2401) (let V2402 (shen.lazyderef (tl V2400) V3031) (if (cons? V2402) (let Semantics (hd V2402) (let V2403 (shen.lazyderef (tl V2402) V3031) (if (cons? V2403) (let V2404 (shen.lazyderef (hd V2403) V3031) (if (= where V2404) (let V2405 (shen.lazyderef (tl V2403) V3031) (if (cons? V2405) (let G (hd V2405) (let V2406 (shen.lazyderef (tl V2405) V3031) (if (= () V2406) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (cons where (cons (shen.lazyderef G V3031) (cons (shen.lazyderef Semantics V3031) ()))) V3031 V3032)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2399) (do (shen.bindv V2399 () V3031) (let Result (let V2407 (shen.lazyderef V3030 V3031) (if (cons? V2407) (let V2408 (shen.lazyderef (hd V2407) V3031) (if (= := V2408) (let V2409 (shen.lazyderef (tl V2407) V3031) (if (cons? V2409) (let Semantics (hd V2409) (let V2410 (shen.lazyderef (tl V2409) V3031) (if (cons? V2410) (let V2411 (shen.lazyderef (hd V2410) V3031) (if (= where V2411) (let V2412 (shen.lazyderef (tl V2410) V3031) (if (cons? V2412) (let G (hd V2412) (let V2413 (shen.lazyderef (tl V2412) V3031) (if (= () V2413) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (cons where (cons (shen.lazyderef G V3031) (cons (shen.lazyderef Semantics V3031) ()))) V3031 V3032)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2399 V3031) Result))) false))) (if (= Case false) (let V2414 (shen.lazyderef V3028 V3031) (if (cons? V2414) (let X2386 (hd V2414) (let Syntax (tl V2414) (let V2415 (shen.lazyderef V3030 V3031) (if (cons? V2415) (let X (hd V2415) (let Rule (tl V2415) (do (shen.incinfs) (unify! X X2386 V3031 (freeze (shen.get-syntax+semantics Syntax V3029 Rule V3031 V3032)))))) false)))) (if (shen.pvar? V2414) (let X2386 (shen.newpv V3031) (let Syntax (shen.newpv V3031) (do (shen.bindv V2414 (cons X2386 Syntax) V3031) (let Result (let V2416 (shen.lazyderef V3030 V3031) (if (cons? V2416) (let X (hd V2416) (let Rule (tl V2416) (do (shen.incinfs) (unify! X X2386 V3031 (freeze (shen.get-syntax+semantics Syntax V3029 Rule V3031 V3032)))))) false)) (do (shen.unbindv V2414 V3031) Result))))) false))) Case)) Case)))))
155
155
 
156
- (defun shen.semantics-check (V3035 V3036 V3037 V3038 V3039) (let Semantics* (shen.newpv V3038) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V3035 V3038))) V3038 (freeze (shen.t* (cons Semantics* (cons : (cons V3036 ()))) V3037 V3038 V3039))))))
156
+ (defun shen.syntax-check (V3033 V3034 V3035 V3036 V3037) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2383 (shen.lazyderef V3033 V3036) (if (= () V2383) (do (shen.incinfs) (thaw V3037)) false)) (if (= Case false) (let Case (let V2384 (shen.lazyderef V3033 V3036) (if (cons? V2384) (let X (hd V2384) (let Syntax (tl V2384) (let C (shen.newpv V3036) (let X&& (shen.newpv V3036) (let B (shen.newpv V3036) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V3036)) V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V3035 V3036 (freeze (cut Throwcontrol V3036 (freeze (bind X&& (concat && (shen.lazyderef X V3036)) V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V3034 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V3035) V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.syntax-check Syntax V3034 V3035 V3036 V3037))))))))))))))))))))))) false)) (if (= Case false) (let V2385 (shen.lazyderef V3033 V3036) (if (cons? V2385) (let X (hd V2385) (let Syntax (tl V2385) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V3034 ()))) V3035 V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.syntax-check Syntax V3034 V3035 V3036 V3037)))))))) false)) Case)) Case)))))
157
157
 
158
- (defun shen.rename-semantics (V3040) (cond ((cons? V3040) (cons (shen.rename-semantics (hd V3040)) (shen.rename-semantics (tl V3040)))) ((shen.grammar_symbol? V3040) (cons shen.<-sem (cons V3040 ()))) (true V3040)))
158
+ (defun shen.semantics-check (V3038 V3039 V3040 V3041 V3042) (let Semantics* (shen.newpv V3041) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V3038 V3041))) V3041 (freeze (shen.t* (cons Semantics* (cons : (cons V3039 ()))) V3040 V3041 V3042))))))
159
+
160
+ (defun shen.rename-semantics (V3043) (cond ((cons? V3043) (cons (shen.rename-semantics (hd V3043)) (shen.rename-semantics (tl V3043)))) ((shen.grammar_symbol? V3043) (cons shen.<-sem (cons V3043 ()))) (true V3043)))
159
161
 
160
162
 
161
163
 
@@ -51,10 +51,6 @@
51
51
 
52
52
  (defun shen.loop () (do (shen.initialise_environment) (do (shen.prompt) (do (trap-error (shen.read-evaluate-print) (lambda E (pr (error-to-string E) (stoutput)))) (shen.loop)))))
53
53
 
54
- (defun version (V2288) (set *version* V2288))
55
-
56
- (version "version 13")
57
-
58
54
  (defun shen.credits () (do (shen.prhush "
59
55
  Shen 2010, copyright (C) 2010 Mark Tarver
60
56
  " (stoutput)) (do (shen.prhush "released under the Shen license
@@ -65,27 +61,27 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
65
61
 
66
62
  (defun shen.initialise_environment () (shen.multiple-set (cons shen.*call* (cons 0 (cons shen.*infs* (cons 0 (cons shen.*process-counter* (cons 0 (cons shen.*catch* (cons 0 ()))))))))))
67
63
 
68
- (defun shen.multiple-set (V2289) (cond ((= () V2289) ()) ((and (cons? V2289) (cons? (tl V2289))) (do (set (hd V2289) (hd (tl V2289))) (shen.multiple-set (tl (tl V2289))))) (true (shen.sys-error shen.multiple-set))))
64
+ (defun shen.multiple-set (V2298) (cond ((= () V2298) ()) ((and (cons? V2298) (cons? (tl V2298))) (do (set (hd V2298) (hd (tl V2298))) (shen.multiple-set (tl (tl V2298))))) (true (shen.sys-error shen.multiple-set))))
69
65
 
70
- (defun destroy (V2290) (declare V2290 ()))
66
+ (defun destroy (V2299) (declare V2299 symbol))
71
67
 
72
68
  (set shen.*history* ())
73
69
 
74
70
  (defun shen.read-evaluate-print () (let Lineread (shen.toplineread) (let History (value shen.*history*) (let NewLineread (shen.retrieve-from-history-if-needed Lineread History) (let NewHistory (shen.update_history NewLineread History) (let Parsed (fst NewLineread) (shen.toplevel Parsed)))))))
75
71
 
76
- (defun shen.retrieve-from-history-if-needed (V2300 V2301) (cond ((and (tuple? V2300) (and (cons? (snd V2300)) (element? (hd (snd V2300)) (cons (shen.space) (cons (shen.newline) ()))))) (shen.retrieve-from-history-if-needed (@p (fst V2300) (tl (snd V2300))) V2301)) ((and (tuple? V2300) (and (cons? (snd V2300)) (and (cons? (tl (snd V2300))) (and (= () (tl (tl (snd V2300)))) (and (cons? V2301) (and (= (hd (snd V2300)) (shen.exclamation)) (= (hd (tl (snd V2300))) (shen.exclamation)))))))) (let PastPrint (shen.prbytes (snd (hd V2301))) (hd V2301))) ((and (tuple? V2300) (and (cons? (snd V2300)) (= (hd (snd V2300)) (shen.exclamation)))) (let Key? (shen.make-key (tl (snd V2300)) V2301) (let Find (head (shen.find-past-inputs Key? V2301)) (let PastPrint (shen.prbytes (snd Find)) Find)))) ((and (tuple? V2300) (and (cons? (snd V2300)) (and (= () (tl (snd V2300))) (= (hd (snd V2300)) (shen.percent))))) (do (shen.print-past-inputs (lambda X true) (reverse V2301) 0) (abort))) ((and (tuple? V2300) (and (cons? (snd V2300)) (= (hd (snd V2300)) (shen.percent)))) (let Key? (shen.make-key (tl (snd V2300)) V2301) (let Pastprint (shen.print-past-inputs Key? (reverse V2301) 0) (abort)))) (true V2300)))
72
+ (defun shen.retrieve-from-history-if-needed (V2309 V2310) (cond ((and (tuple? V2309) (and (cons? (snd V2309)) (element? (hd (snd V2309)) (cons (shen.space) (cons (shen.newline) ()))))) (shen.retrieve-from-history-if-needed (@p (fst V2309) (tl (snd V2309))) V2310)) ((and (tuple? V2309) (and (cons? (snd V2309)) (and (cons? (tl (snd V2309))) (and (= () (tl (tl (snd V2309)))) (and (cons? V2310) (and (= (hd (snd V2309)) (shen.exclamation)) (= (hd (tl (snd V2309))) (shen.exclamation)))))))) (let PastPrint (shen.prbytes (snd (hd V2310))) (hd V2310))) ((and (tuple? V2309) (and (cons? (snd V2309)) (= (hd (snd V2309)) (shen.exclamation)))) (let Key? (shen.make-key (tl (snd V2309)) V2310) (let Find (head (shen.find-past-inputs Key? V2310)) (let PastPrint (shen.prbytes (snd Find)) Find)))) ((and (tuple? V2309) (and (cons? (snd V2309)) (and (= () (tl (snd V2309))) (= (hd (snd V2309)) (shen.percent))))) (do (shen.print-past-inputs (lambda X true) (reverse V2310) 0) (abort))) ((and (tuple? V2309) (and (cons? (snd V2309)) (= (hd (snd V2309)) (shen.percent)))) (let Key? (shen.make-key (tl (snd V2309)) V2310) (let Pastprint (shen.print-past-inputs Key? (reverse V2310) 0) (abort)))) (true V2309)))
77
73
 
78
74
  (defun shen.percent () 37)
79
75
 
80
76
  (defun shen.exclamation () 33)
81
77
 
82
- (defun shen.prbytes (V2302) (do (map (lambda Byte (pr (n->string Byte) (stoutput))) V2302) (nl 1)))
78
+ (defun shen.prbytes (V2311) (do (map (lambda Byte (pr (n->string Byte) (stoutput))) V2311) (nl 1)))
83
79
 
84
- (defun shen.update_history (V2303 V2304) (set shen.*history* (cons V2303 V2304)))
80
+ (defun shen.update_history (V2312 V2313) (set shen.*history* (cons V2312 V2313)))
85
81
 
86
82
  (defun shen.toplineread () (shen.toplineread_loop (read-byte (stinput)) ()))
87
83
 
88
- (defun shen.toplineread_loop (V2306 V2307) (cond ((= V2306 (shen.hat)) (simple-error "line read aborted")) ((element? V2306 (cons (shen.newline) (cons (shen.carriage-return) ()))) (let Line (compile shen.<st_input> V2307 (lambda E shen.nextline)) (if (or (= Line shen.nextline) (empty? Line)) (shen.toplineread_loop (read-byte (stinput)) (append V2307 (cons V2306 ()))) (@p Line V2307)))) (true (shen.toplineread_loop (read-byte (stinput)) (append V2307 (cons V2306 ()))))))
84
+ (defun shen.toplineread_loop (V2315 V2316) (cond ((= V2315 (shen.hat)) (simple-error "line read aborted")) ((element? V2315 (cons (shen.newline) (cons (shen.carriage-return) ()))) (let Line (compile shen.<st_input> V2316 (lambda E shen.nextline)) (if (or (= Line shen.nextline) (empty? Line)) (shen.toplineread_loop (read-byte (stinput)) (append V2316 (cons V2315 ()))) (@p Line V2316)))) (true (shen.toplineread_loop (read-byte (stinput)) (append V2316 (cons V2315 ()))))))
89
85
 
90
86
  (defun shen.hat () 94)
91
87
 
@@ -93,7 +89,7 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
93
89
 
94
90
  (defun shen.carriage-return () 13)
95
91
 
96
- (defun tc (V2312) (cond ((= + V2312) (set shen.*tc* true)) ((= - V2312) (set shen.*tc* false)) (true (simple-error "tc expects a + or -"))))
92
+ (defun tc (V2321) (cond ((= + V2321) (set shen.*tc* true)) ((= - V2321) (set shen.*tc* false)) (true (simple-error "tc expects a + or -"))))
97
93
 
98
94
  (defun shen.prompt () (if (value shen.*tc*) (shen.prhush (cn "
99
95
 
@@ -101,16 +97,16 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
101
97
 
102
98
  (" (shen.app (length (value shen.*history*)) "-) " shen.a)) (stoutput))))
103
99
 
104
- (defun shen.toplevel (V2313) (shen.toplevel_evaluate V2313 (value shen.*tc*)))
100
+ (defun shen.toplevel (V2322) (shen.toplevel_evaluate V2322 (value shen.*tc*)))
105
101
 
106
- (defun shen.find-past-inputs (V2314 V2315) (let F (shen.find V2314 V2315) (if (empty? F) (simple-error "input not found
102
+ (defun shen.find-past-inputs (V2323 V2324) (let F (shen.find V2323 V2324) (if (empty? F) (simple-error "input not found
107
103
  ") F)))
108
104
 
109
- (defun shen.make-key (V2316 V2317) (let Atom (hd (compile shen.<st_input> V2316 (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
105
+ (defun shen.make-key (V2325 V2326) (let Atom (hd (compile shen.<st_input> V2325 (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
110
106
  " shen.s))) (simple-error "parse error
111
- "))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse V2317)))) (lambda X (shen.prefix? V2316 (shen.trim-gubbins (snd X)))))))
107
+ "))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse V2326)))) (lambda X (shen.prefix? V2325 (shen.trim-gubbins (snd X)))))))
112
108
 
113
- (defun shen.trim-gubbins (V2318) (cond ((and (cons? V2318) (= (hd V2318) (shen.space))) (shen.trim-gubbins (tl V2318))) ((and (cons? V2318) (= (hd V2318) (shen.newline))) (shen.trim-gubbins (tl V2318))) ((and (cons? V2318) (= (hd V2318) (shen.carriage-return))) (shen.trim-gubbins (tl V2318))) ((and (cons? V2318) (= (hd V2318) (shen.tab))) (shen.trim-gubbins (tl V2318))) ((and (cons? V2318) (= (hd V2318) (shen.left-round))) (shen.trim-gubbins (tl V2318))) (true V2318)))
109
+ (defun shen.trim-gubbins (V2327) (cond ((and (cons? V2327) (= (hd V2327) (shen.space))) (shen.trim-gubbins (tl V2327))) ((and (cons? V2327) (= (hd V2327) (shen.newline))) (shen.trim-gubbins (tl V2327))) ((and (cons? V2327) (= (hd V2327) (shen.carriage-return))) (shen.trim-gubbins (tl V2327))) ((and (cons? V2327) (= (hd V2327) (shen.tab))) (shen.trim-gubbins (tl V2327))) ((and (cons? V2327) (= (hd V2327) (shen.left-round))) (shen.trim-gubbins (tl V2327))) (true V2327)))
114
110
 
115
111
  (defun shen.space () 32)
116
112
 
@@ -118,22 +114,22 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
118
114
 
119
115
  (defun shen.left-round () 40)
120
116
 
121
- (defun shen.find (V2325 V2326) (cond ((= () V2326) ()) ((and (cons? V2326) (V2325 (hd V2326))) (cons (hd V2326) (shen.find V2325 (tl V2326)))) ((cons? V2326) (shen.find V2325 (tl V2326))) (true (shen.sys-error shen.find))))
117
+ (defun shen.find (V2334 V2335) (cond ((= () V2335) ()) ((and (cons? V2335) (V2334 (hd V2335))) (cons (hd V2335) (shen.find V2334 (tl V2335)))) ((cons? V2335) (shen.find V2334 (tl V2335))) (true (shen.sys-error shen.find))))
122
118
 
123
- (defun shen.prefix? (V2337 V2338) (cond ((= () V2337) true) ((and (cons? V2337) (and (cons? V2338) (= (hd V2338) (hd V2337)))) (shen.prefix? (tl V2337) (tl V2338))) (true false)))
119
+ (defun shen.prefix? (V2346 V2347) (cond ((= () V2346) true) ((and (cons? V2346) (and (cons? V2347) (= (hd V2347) (hd V2346)))) (shen.prefix? (tl V2346) (tl V2347))) (true false)))
124
120
 
125
- (defun shen.print-past-inputs (V2348 V2349 V2350) (cond ((= () V2349) _) ((and (cons? V2349) (not (V2348 (hd V2349)))) (shen.print-past-inputs V2348 (tl V2349) (+ V2350 1))) ((and (cons? V2349) (tuple? (hd V2349))) (do (shen.prhush (shen.app V2350 ". " shen.a) (stoutput)) (do (shen.prbytes (snd (hd V2349))) (shen.print-past-inputs V2348 (tl V2349) (+ V2350 1))))) (true (shen.sys-error shen.print-past-inputs))))
121
+ (defun shen.print-past-inputs (V2357 V2358 V2359) (cond ((= () V2358) _) ((and (cons? V2358) (not (V2357 (hd V2358)))) (shen.print-past-inputs V2357 (tl V2358) (+ V2359 1))) ((and (cons? V2358) (tuple? (hd V2358))) (do (shen.prhush (shen.app V2359 ". " shen.a) (stoutput)) (do (shen.prbytes (snd (hd V2358))) (shen.print-past-inputs V2357 (tl V2358) (+ V2359 1))))) (true (shen.sys-error shen.print-past-inputs))))
126
122
 
127
- (defun shen.toplevel_evaluate (V2351 V2352) (cond ((and (cons? V2351) (and (cons? (tl V2351)) (and (= : (hd (tl V2351))) (and (cons? (tl (tl V2351))) (and (= () (tl (tl (tl V2351)))) (= true V2352)))))) (shen.typecheck-and-evaluate (hd V2351) (hd (tl (tl V2351))))) ((and (cons? V2351) (cons? (tl V2351))) (do (shen.toplevel_evaluate (cons (hd V2351) ()) V2352) (do (nl 1) (shen.toplevel_evaluate (tl V2351) V2352)))) ((and (cons? V2351) (and (= () (tl V2351)) (= true V2352))) (shen.typecheck-and-evaluate (hd V2351) (gensym A))) ((and (cons? V2351) (and (= () (tl V2351)) (= false V2352))) (let Eval (shen.eval-without-macros (hd V2351)) (print Eval))) (true (shen.sys-error shen.toplevel_evaluate))))
123
+ (defun shen.toplevel_evaluate (V2360 V2361) (cond ((and (cons? V2360) (and (cons? (tl V2360)) (and (= : (hd (tl V2360))) (and (cons? (tl (tl V2360))) (and (= () (tl (tl (tl V2360)))) (= true V2361)))))) (shen.typecheck-and-evaluate (hd V2360) (hd (tl (tl V2360))))) ((and (cons? V2360) (cons? (tl V2360))) (do (shen.toplevel_evaluate (cons (hd V2360) ()) V2361) (do (nl 1) (shen.toplevel_evaluate (tl V2360) V2361)))) ((and (cons? V2360) (and (= () (tl V2360)) (= true V2361))) (shen.typecheck-and-evaluate (hd V2360) (gensym A))) ((and (cons? V2360) (and (= () (tl V2360)) (= false V2361))) (let Eval (shen.eval-without-macros (hd V2360)) (print Eval))) (true (shen.sys-error shen.toplevel_evaluate))))
128
124
 
129
- (defun shen.typecheck-and-evaluate (V2353 V2354) (let Typecheck (shen.typecheck V2353 V2354) (if (= Typecheck false) (simple-error "type error
130
- ") (let Eval (shen.eval-without-macros V2353) (let Type (shen.pretty-type Typecheck) (shen.prhush (shen.app Eval (cn " : " (shen.app Type "" shen.r)) shen.s) (stoutput)))))))
125
+ (defun shen.typecheck-and-evaluate (V2362 V2363) (let Typecheck (shen.typecheck V2362 V2363) (if (= Typecheck false) (simple-error "type error
126
+ ") (let Eval (shen.eval-without-macros V2362) (let Type (shen.pretty-type Typecheck) (shen.prhush (shen.app Eval (cn " : " (shen.app Type "" shen.r)) shen.s) (stoutput)))))))
131
127
 
132
- (defun shen.pretty-type (V2355) (shen.mult_subst (value shen.*alphabet*) (shen.extract-pvars V2355) V2355))
128
+ (defun shen.pretty-type (V2364) (shen.mult_subst (value shen.*alphabet*) (shen.extract-pvars V2364) V2364))
133
129
 
134
- (defun shen.extract-pvars (V2360) (cond ((shen.pvar? V2360) (cons V2360 ())) ((cons? V2360) (union (shen.extract-pvars (hd V2360)) (shen.extract-pvars (tl V2360)))) (true ())))
130
+ (defun shen.extract-pvars (V2369) (cond ((shen.pvar? V2369) (cons V2369 ())) ((cons? V2369) (union (shen.extract-pvars (hd V2369)) (shen.extract-pvars (tl V2369)))) (true ())))
135
131
 
136
- (defun shen.mult_subst (V2365 V2366 V2367) (cond ((= () V2365) V2367) ((= () V2366) V2367) ((and (cons? V2365) (cons? V2366)) (shen.mult_subst (tl V2365) (tl V2366) (subst (hd V2365) (hd V2366) V2367))) (true (shen.sys-error shen.mult_subst))))
132
+ (defun shen.mult_subst (V2374 V2375 V2376) (cond ((= () V2374) V2376) ((= () V2375) V2376) ((and (cons? V2374) (cons? V2375)) (shen.mult_subst (tl V2374) (tl V2375) (subst (hd V2374) (hd V2375) V2376))) (true (shen.sys-error shen.mult_subst))))
137
133
 
138
134
 
139
135
 
@@ -47,57 +47,57 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun shen.f_error (V2062) (do (shen.prhush (cn "partial function " (shen.app V2062 ";
51
- " shen.a)) (stoutput)) (do (if (and (not (shen.tracked? V2062)) (y-or-n? (cn "track " (shen.app V2062 "? " shen.a)))) (shen.track-function (ps V2062)) shen.ok) (simple-error "aborted"))))
50
+ "(defun shen.f_error (V2069) (do (shen.prhush (cn "partial function " (shen.app V2069 ";
51
+ " shen.a)) (stoutput)) (do (if (and (not (shen.tracked? V2069)) (y-or-n? (cn "track " (shen.app V2069 "? " shen.a)))) (shen.track-function (ps V2069)) shen.ok) (simple-error "aborted"))))
52
52
 
53
- (defun shen.tracked? (V2063) (element? V2063 (value shen.*tracking*)))
53
+ (defun shen.tracked? (V2070) (element? V2070 (value shen.*tracking*)))
54
54
 
55
- (defun track (V2064) (let Source (ps V2064) (shen.track-function Source)))
55
+ (defun track (V2071) (let Source (ps V2071) (shen.track-function Source)))
56
56
 
57
- (defun shen.track-function (V2065) (cond ((and (cons? V2065) (and (= defun (hd V2065)) (and (cons? (tl V2065)) (and (cons? (tl (tl V2065))) (and (cons? (tl (tl (tl V2065)))) (= () (tl (tl (tl (tl V2065)))))))))) (let KL (cons defun (cons (hd (tl V2065)) (cons (hd (tl (tl V2065))) (cons (shen.insert-tracking-code (hd (tl V2065)) (hd (tl (tl V2065))) (hd (tl (tl (tl V2065))))) ())))) (let Ob (eval KL) (let Tr (set shen.*tracking* (cons Ob (value shen.*tracking*))) Ob)))) (true (shen.sys-error shen.track-function))))
57
+ (defun shen.track-function (V2072) (cond ((and (cons? V2072) (and (= defun (hd V2072)) (and (cons? (tl V2072)) (and (cons? (tl (tl V2072))) (and (cons? (tl (tl (tl V2072)))) (= () (tl (tl (tl (tl V2072)))))))))) (let KL (cons defun (cons (hd (tl V2072)) (cons (hd (tl (tl V2072))) (cons (shen.insert-tracking-code (hd (tl V2072)) (hd (tl (tl V2072))) (hd (tl (tl (tl V2072))))) ())))) (let Ob (eval KL) (let Tr (set shen.*tracking* (cons Ob (value shen.*tracking*))) Ob)))) (true (shen.sys-error shen.track-function))))
58
58
 
59
- (defun shen.insert-tracking-code (V2066 V2067 V2068) (cons do (cons (cons set (cons shen.*call* (cons (cons + (cons (cons value (cons shen.*call* ())) (cons 1 ()))) ()))) (cons (cons do (cons (cons shen.input-track (cons (cons value (cons shen.*call* ())) (cons V2066 (cons (shen.cons_form V2067) ())))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons (cons let (cons Result (cons V2068 (cons (cons do (cons (cons shen.output-track (cons (cons value (cons shen.*call* ())) (cons V2066 (cons Result ())))) (cons (cons do (cons (cons set (cons shen.*call* (cons (cons - (cons (cons value (cons shen.*call* ())) (cons 1 ()))) ()))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons Result ()))) ()))) ()))) ())))) ()))) ()))) ()))))
59
+ (defun shen.insert-tracking-code (V2073 V2074 V2075) (cons do (cons (cons set (cons shen.*call* (cons (cons + (cons (cons value (cons shen.*call* ())) (cons 1 ()))) ()))) (cons (cons do (cons (cons shen.input-track (cons (cons value (cons shen.*call* ())) (cons V2073 (cons (shen.cons_form V2074) ())))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons (cons let (cons Result (cons V2075 (cons (cons do (cons (cons shen.output-track (cons (cons value (cons shen.*call* ())) (cons V2073 (cons Result ())))) (cons (cons do (cons (cons set (cons shen.*call* (cons (cons - (cons (cons value (cons shen.*call* ())) (cons 1 ()))) ()))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons Result ()))) ()))) ()))) ())))) ()))) ()))) ()))))
60
60
 
61
61
  (set shen.*step* false)
62
62
 
63
- (defun step (V2073) (cond ((= + V2073) (set shen.*step* true)) ((= - V2073) (set shen.*step* false)) (true (simple-error "step expects a + or a -.
63
+ (defun step (V2080) (cond ((= + V2080) (set shen.*step* true)) ((= - V2080) (set shen.*step* false)) (true (simple-error "step expects a + or a -.
64
64
  "))))
65
65
 
66
- (defun spy (V2078) (cond ((= + V2078) (set shen.*spy* true)) ((= - V2078) (set shen.*spy* false)) (true (simple-error "spy expects a + or a -.
66
+ (defun spy (V2085) (cond ((= + V2085) (set shen.*spy* true)) ((= - V2085) (set shen.*spy* false)) (true (simple-error "spy expects a + or a -.
67
67
  "))))
68
68
 
69
69
  (defun shen.terpri-or-read-char () (if (value shen.*step*) (shen.check-byte (read-byte (value *stinput*))) (nl 1)))
70
70
 
71
- (defun shen.check-byte (V2083) (cond ((= V2083 (shen.hat)) (simple-error "aborted")) (true true)))
71
+ (defun shen.check-byte (V2090) (cond ((= V2090 (shen.hat)) (simple-error "aborted")) (true true)))
72
72
 
73
- (defun shen.input-track (V2084 V2085 V2086) (do (shen.prhush (cn "
74
- " (shen.app (shen.spaces V2084) (cn "<" (shen.app V2084 (cn "> Inputs to " (shen.app V2085 (cn "
75
- " (shen.app (shen.spaces V2084) "" shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)) (shen.recursively-print V2086)))
73
+ (defun shen.input-track (V2091 V2092 V2093) (do (shen.prhush (cn "
74
+ " (shen.app (shen.spaces V2091) (cn "<" (shen.app V2091 (cn "> Inputs to " (shen.app V2092 (cn "
75
+ " (shen.app (shen.spaces V2091) "" shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)) (shen.recursively-print V2093)))
76
76
 
77
- (defun shen.recursively-print (V2087) (cond ((= () V2087) (shen.prhush " ==>" (stoutput))) ((cons? V2087) (do (print (hd V2087)) (do (shen.prhush ", " (stoutput)) (shen.recursively-print (tl V2087))))) (true (shen.sys-error shen.recursively-print))))
77
+ (defun shen.recursively-print (V2094) (cond ((= () V2094) (shen.prhush " ==>" (stoutput))) ((cons? V2094) (do (print (hd V2094)) (do (shen.prhush ", " (stoutput)) (shen.recursively-print (tl V2094))))) (true (shen.sys-error shen.recursively-print))))
78
78
 
79
- (defun shen.spaces (V2088) (cond ((= 0 V2088) "") (true (cn " " (shen.spaces (- V2088 1))))))
79
+ (defun shen.spaces (V2095) (cond ((= 0 V2095) "") (true (cn " " (shen.spaces (- V2095 1))))))
80
80
 
81
- (defun shen.output-track (V2089 V2090 V2091) (shen.prhush (cn "
82
- " (shen.app (shen.spaces V2089) (cn "<" (shen.app V2089 (cn "> Output from " (shen.app V2090 (cn "
83
- " (shen.app (shen.spaces V2089) (cn "==> " (shen.app V2091 "" shen.s)) shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)))
81
+ (defun shen.output-track (V2096 V2097 V2098) (shen.prhush (cn "
82
+ " (shen.app (shen.spaces V2096) (cn "<" (shen.app V2096 (cn "> Output from " (shen.app V2097 (cn "
83
+ " (shen.app (shen.spaces V2096) (cn "==> " (shen.app V2098 "" shen.s)) shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)))
84
84
 
85
- (defun untrack (V2092) (eval (ps V2092)))
85
+ (defun untrack (V2099) (eval (ps V2099)))
86
86
 
87
- (defun profile (V2093) (shen.profile-help (ps V2093)))
87
+ (defun profile (V2100) (shen.profile-help (ps V2100)))
88
88
 
89
- (defun shen.profile-help (V2098) (cond ((and (cons? V2098) (and (= defun (hd V2098)) (and (cons? (tl V2098)) (and (cons? (tl (tl V2098))) (and (cons? (tl (tl (tl V2098)))) (= () (tl (tl (tl (tl V2098)))))))))) (let G (gensym shen.f) (let Profile (cons defun (cons (hd (tl V2098)) (cons (hd (tl (tl V2098))) (cons (shen.profile-func (hd (tl V2098)) (hd (tl (tl V2098))) (cons G (hd (tl (tl V2098))))) ())))) (let Def (cons defun (cons G (cons (hd (tl (tl V2098))) (cons (subst G (hd (tl V2098)) (hd (tl (tl (tl V2098))))) ())))) (let CompileProfile (shen.eval-without-macros Profile) (let CompileG (shen.eval-without-macros Def) (hd (tl V2098)))))))) (true (simple-error "Cannot profile.
89
+ (defun shen.profile-help (V2105) (cond ((and (cons? V2105) (and (= defun (hd V2105)) (and (cons? (tl V2105)) (and (cons? (tl (tl V2105))) (and (cons? (tl (tl (tl V2105)))) (= () (tl (tl (tl (tl V2105)))))))))) (let G (gensym shen.f) (let Profile (cons defun (cons (hd (tl V2105)) (cons (hd (tl (tl V2105))) (cons (shen.profile-func (hd (tl V2105)) (hd (tl (tl V2105))) (cons G (hd (tl (tl V2105))))) ())))) (let Def (cons defun (cons G (cons (hd (tl (tl V2105))) (cons (subst G (hd (tl V2105)) (hd (tl (tl (tl V2105))))) ())))) (let CompileProfile (shen.eval-without-macros Profile) (let CompileG (shen.eval-without-macros Def) (hd (tl V2105)))))))) (true (simple-error "Cannot profile.
90
90
  "))))
91
91
 
92
- (defun unprofile (V2099) (untrack V2099))
92
+ (defun unprofile (V2106) (untrack V2106))
93
93
 
94
- (defun shen.profile-func (V2100 V2101 V2102) (cons let (cons Start (cons (cons get-time (cons run ())) (cons (cons let (cons Result (cons V2102 (cons (cons let (cons Finish (cons (cons - (cons (cons get-time (cons run ())) (cons Start ()))) (cons (cons let (cons Record (cons (cons shen.put-profile (cons V2100 (cons (cons + (cons (cons shen.get-profile (cons V2100 ())) (cons Finish ()))) ()))) (cons Result ())))) ())))) ())))) ())))))
94
+ (defun shen.profile-func (V2107 V2108 V2109) (cons let (cons Start (cons (cons get-time (cons run ())) (cons (cons let (cons Result (cons V2109 (cons (cons let (cons Finish (cons (cons - (cons (cons get-time (cons run ())) (cons Start ()))) (cons (cons let (cons Record (cons (cons shen.put-profile (cons V2107 (cons (cons + (cons (cons shen.get-profile (cons V2107 ())) (cons Finish ()))) ()))) (cons Result ())))) ())))) ())))) ())))))
95
95
 
96
- (defun profile-results (V2103) (let Results (shen.get-profile V2103) (let Initialise (shen.put-profile V2103 0) (@p V2103 Results))))
96
+ (defun profile-results (V2110) (let Results (shen.get-profile V2110) (let Initialise (shen.put-profile V2110 0) (@p V2110 Results))))
97
97
 
98
- (defun shen.get-profile (V2104) (trap-error (get V2104 profile (value *property-vector*)) (lambda E 0)))
98
+ (defun shen.get-profile (V2111) (trap-error (get V2111 profile (value *property-vector*)) (lambda E 0)))
99
99
 
100
- (defun shen.put-profile (V2105 V2106) (put V2105 profile V2106 (value *property-vector*)))
100
+ (defun shen.put-profile (V2112 V2113) (put V2112 profile V2113 (value *property-vector*)))
101
101
 
102
102
 
103
103
 
@@ -47,18 +47,18 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun declare (V2107 V2108) (let Record (set shen.*signedfuncs* (cons (cons V2107 V2108) (value shen.*signedfuncs*))) (let Variancy (trap-error (shen.variancy-test V2107 V2108) (lambda E shen.skip)) (let Type (shen.rcons_form (shen.demodulate V2108)) (let F* (concat shen.type-signature-of- V2107) (let Parameters (shen.parameters 1) (let Clause (cons (cons F* (cons X ())) (cons :- (cons (cons (cons unify! (cons X (cons Type ()))) ()) ()))) (let AUM_instruction (shen.aum Clause Parameters) (let Code (shen.aum_to_shen AUM_instruction) (let ShenDef (cons define (cons F* (append Parameters (append (cons ProcessN (cons Continuation ())) (cons -> (cons Code ())))))) (let Eval (shen.eval-without-macros ShenDef) V2107)))))))))))
50
+ "(defun declare (V2114 V2115) (let Record (set shen.*signedfuncs* (cons (cons V2114 V2115) (value shen.*signedfuncs*))) (let Variancy (trap-error (shen.variancy-test V2114 V2115) (lambda E shen.skip)) (let Type (shen.rcons_form (shen.demodulate V2115)) (let F* (concat shen.type-signature-of- V2114) (let Parameters (shen.parameters 1) (let Clause (cons (cons F* (cons X ())) (cons :- (cons (cons (cons unify! (cons X (cons Type ()))) ()) ()))) (let AUM_instruction (shen.aum Clause Parameters) (let Code (shen.aum_to_shen AUM_instruction) (let ShenDef (cons define (cons F* (append Parameters (append (cons ProcessN (cons Continuation ())) (cons -> (cons Code ())))))) (let Eval (shen.eval-without-macros ShenDef) V2114)))))))))))
51
51
 
52
- (defun shen.demodulate (V2109) (fix shen.demodh V2109))
52
+ (defun shen.demodulate (V2116) (fix shen.demodh V2116))
53
53
 
54
- (defun shen.demodh (V2110) (cond ((cons? V2110) (map shen.demodh V2110)) (true (shen.demod-atom V2110))))
54
+ (defun shen.demodh (V2117) (cond ((cons? V2117) (map shen.demodh V2117)) (true (shen.demod-atom V2117))))
55
55
 
56
- (defun shen.demod-atom (V2111) (let Val (assoc V2111 (value shen.*synonyms*)) (if (empty? Val) V2111 (tl Val))))
56
+ (defun shen.demod-atom (V2118) (let Val (assoc V2118 (value shen.*synonyms*)) (if (empty? Val) V2118 (tl Val))))
57
57
 
58
- (defun shen.variancy-test (V2112 V2113) (let TypeF (shen.typecheck V2112 B) (let Check (if (= symbol TypeF) shen.skip (if (shen.variant? TypeF V2113) shen.skip (shen.prhush (cn "warning: changing the type of " (shen.app V2112 " may create errors
58
+ (defun shen.variancy-test (V2119 V2120) (let TypeF (shen.typecheck V2119 B) (let Check (if (= symbol TypeF) shen.skip (if (shen.variant? TypeF V2120) shen.skip (shen.prhush (cn "warning: changing the type of " (shen.app V2119 " may create errors
59
59
  " shen.a)) (stoutput)))) shen.skip)))
60
60
 
61
- (defun shen.variant? (V2122 V2123) (cond ((= V2123 V2122) true) ((and (cons? V2122) (and (cons? V2123) (= (hd V2123) (hd V2122)))) (shen.variant? (tl V2122) (tl V2123))) ((and (cons? V2122) (and (cons? V2123) (and (shen.pvar? (hd V2122)) (variable? (hd V2123))))) (shen.variant? (subst shen.a (hd V2122) (tl V2122)) (subst shen.a (hd V2123) (tl V2123)))) ((and (cons? V2122) (and (cons? (hd V2122)) (and (cons? V2123) (cons? (hd V2123))))) (shen.variant? (append (hd V2122) (tl V2122)) (append (hd V2123) (tl V2123)))) (true false)))
61
+ (defun shen.variant? (V2129 V2130) (cond ((= V2130 V2129) true) ((and (cons? V2129) (and (cons? V2130) (= (hd V2130) (hd V2129)))) (shen.variant? (tl V2129) (tl V2130))) ((and (cons? V2129) (and (cons? V2130) (and (shen.pvar? (hd V2129)) (variable? (hd V2130))))) (shen.variant? (subst shen.a (hd V2129) (tl V2129)) (subst shen.a (hd V2130) (tl V2130)))) ((and (cons? V2129) (and (cons? (hd V2129)) (and (cons? V2130) (cons? (hd V2130))))) (shen.variant? (append (hd V2129) (tl V2129)) (append (hd V2130) (tl V2130)))) (true false)))
62
62
 
63
63
  (declare absvector? (cons A (cons --> (cons boolean ()))))
64
64
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  (declare cons? (cons A (cons --> (cons boolean ()))))
90
90
 
91
- (declare destroy (cons (cons A (cons --> (cons B ()))) (cons --> (cons (cons A (cons --> (cons B ()))) ()))))
91
+ (declare destroy (cons (cons A (cons --> (cons B ()))) (cons --> (cons symbol ()))))
92
92
 
93
93
  (declare difference (cons (cons list (cons A ())) (cons --> (cons (cons (cons list (cons A ())) (cons --> (cons (cons list (cons A ())) ()))) ()))))
94
94
 
@@ -138,6 +138,8 @@
138
138
 
139
139
  (declare if (cons boolean (cons --> (cons (cons A (cons --> (cons (cons A (cons --> (cons A ()))) ()))) ()))))
140
140
 
141
+ (declare implementation (cons --> (cons string ())))
142
+
141
143
  (declare include (cons (cons list (cons symbol ())) (cons --> (cons (cons list (cons symbol ())) ()))))
142
144
 
143
145
  (declare include-all-but (cons (cons list (cons symbol ())) (cons --> (cons (cons list (cons symbol ())) ()))))
@@ -152,6 +154,8 @@
152
154
 
153
155
  (declare kill (cons --> (cons A ())))
154
156
 
157
+ (declare language (cons --> (cons string ())))
158
+
155
159
  (declare length (cons (cons list (cons A ())) (cons --> (cons number ()))))
156
160
 
157
161
  (declare limit (cons (cons vector (cons A ())) (cons --> (cons number ()))))
@@ -182,6 +186,12 @@
182
186
 
183
187
  (declare or (cons boolean (cons --> (cons (cons boolean (cons --> (cons boolean ()))) ()))))
184
188
 
189
+ (declare os (cons --> (cons string ())))
190
+
191
+ (declare port (cons --> (cons string ())))
192
+
193
+ (declare porters (cons --> (cons string ())))
194
+
185
195
  (declare pos (cons string (cons --> (cons (cons number (cons --> (cons string ()))) ()))))
186
196
 
187
197
  (declare pr (cons string (cons --> (cons (cons (cons stream (cons out ())) (cons --> (cons string ()))) ()))))
@@ -214,6 +224,8 @@
214
224
 
215
225
  (declare read-from-string (cons string (cons --> (cons (cons list (cons unit ())) ()))))
216
226
 
227
+ (declare release (cons --> (cons string ())))
228
+
217
229
  (declare remove (cons A (cons --> (cons (cons (cons list (cons A ())) (cons --> (cons (cons list (cons A ())) ()))) ()))))
218
230
 
219
231
  (declare reverse (cons (cons list (cons A ())) (cons --> (cons (cons list (cons A ())) ()))))
@@ -240,7 +252,7 @@
240
252
 
241
253
  (declare string->symbol (cons string (cons --> (cons symbol ()))))
242
254
 
243
- (declare shen.sum (cons (cons list (cons number ())) (cons --> (cons number ()))))
255
+ (declare sum (cons (cons list (cons number ())) (cons --> (cons number ()))))
244
256
 
245
257
  (declare symbol? (cons A (cons --> (cons boolean ()))))
246
258
 
@@ -280,7 +292,7 @@
280
292
 
281
293
  (declare vector? (cons A (cons --> (cons boolean ()))))
282
294
 
283
- (declare version (cons string (cons --> (cons string ()))))
295
+ (declare version (cons --> (cons string ())))
284
296
 
285
297
  (declare write-to-file (cons string (cons --> (cons (cons A (cons --> (cons A ()))) ()))))
286
298
 
@@ -47,59 +47,59 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun pr (V2210 V2211) (trap-error (shen.prh V2210 V2211 0) (lambda E V2210)))
50
+ "(defun pr (V2220 V2221) (trap-error (shen.prh V2220 V2221 0) (lambda E V2220)))
51
51
 
52
- (defun shen.prh (V2212 V2213 V2214) (shen.prh V2212 V2213 (shen.write-char-and-inc V2212 V2213 V2214)))
52
+ (defun shen.prh (V2222 V2223 V2224) (shen.prh V2222 V2223 (shen.write-char-and-inc V2222 V2223 V2224)))
53
53
 
54
- (defun shen.write-char-and-inc (V2215 V2216 V2217) (do (write-byte (string->n (pos V2215 V2217)) V2216) (+ V2217 1)))
54
+ (defun shen.write-char-and-inc (V2225 V2226 V2227) (do (write-byte (string->n (pos V2225 V2227)) V2226) (+ V2227 1)))
55
55
 
56
- (defun print (V2218) (let String (shen.insert V2218 "~S") (let Print (shen.prhush String (stoutput)) V2218)))
56
+ (defun print (V2228) (let String (shen.insert V2228 "~S") (let Print (shen.prhush String (stoutput)) V2228)))
57
57
 
58
- (defun shen.prhush (V2219 V2220) (if (value *hush*) V2219 (pr V2219 V2220)))
58
+ (defun shen.prhush (V2229 V2230) (if (value *hush*) V2229 (pr V2229 V2230)))
59
59
 
60
- (defun shen.mkstr (V2221 V2222) (cond ((string? V2221) (shen.mkstr-l (shen.proc-nl V2221) V2222)) (true (shen.mkstr-r (cons shen.proc-nl (cons V2221 ())) V2222))))
60
+ (defun shen.mkstr (V2231 V2232) (cond ((string? V2231) (shen.mkstr-l (shen.proc-nl V2231) V2232)) (true (shen.mkstr-r (cons shen.proc-nl (cons V2231 ())) V2232))))
61
61
 
62
- (defun shen.mkstr-l (V2223 V2224) (cond ((= () V2224) V2223) ((cons? V2224) (shen.mkstr-l (shen.insert-l (hd V2224) V2223) (tl V2224))) (true (shen.sys-error shen.mkstr-l))))
62
+ (defun shen.mkstr-l (V2233 V2234) (cond ((= () V2234) V2233) ((cons? V2234) (shen.mkstr-l (shen.insert-l (hd V2234) V2233) (tl V2234))) (true (shen.sys-error shen.mkstr-l))))
63
63
 
64
- (defun shen.insert-l (V2227 V2228) (cond ((= "" V2228) "") ((and (shen.+string? V2228) (and (= "~" (pos V2228 0)) (and (shen.+string? (tlstr V2228)) (= "A" (pos (tlstr V2228) 0))))) (cons shen.app (cons V2227 (cons (tlstr (tlstr V2228)) (cons shen.a ()))))) ((and (shen.+string? V2228) (and (= "~" (pos V2228 0)) (and (shen.+string? (tlstr V2228)) (= "R" (pos (tlstr V2228) 0))))) (cons shen.app (cons V2227 (cons (tlstr (tlstr V2228)) (cons shen.r ()))))) ((and (shen.+string? V2228) (and (= "~" (pos V2228 0)) (and (shen.+string? (tlstr V2228)) (= "S" (pos (tlstr V2228) 0))))) (cons shen.app (cons V2227 (cons (tlstr (tlstr V2228)) (cons shen.s ()))))) ((shen.+string? V2228) (shen.factor-cn (cons cn (cons (pos V2228 0) (cons (shen.insert-l V2227 (tlstr V2228)) ()))))) ((and (cons? V2228) (and (= cn (hd V2228)) (and (cons? (tl V2228)) (and (cons? (tl (tl V2228))) (= () (tl (tl (tl V2228)))))))) (cons cn (cons (hd (tl V2228)) (cons (shen.insert-l V2227 (hd (tl (tl V2228)))) ())))) ((and (cons? V2228) (and (= shen.app (hd V2228)) (and (cons? (tl V2228)) (and (cons? (tl (tl V2228))) (and (cons? (tl (tl (tl V2228)))) (= () (tl (tl (tl (tl V2228)))))))))) (cons shen.app (cons (hd (tl V2228)) (cons (shen.insert-l V2227 (hd (tl (tl V2228)))) (tl (tl (tl V2228))))))) (true (shen.sys-error shen.insert-l))))
64
+ (defun shen.insert-l (V2237 V2238) (cond ((= "" V2238) "") ((and (shen.+string? V2238) (and (= "~" (pos V2238 0)) (and (shen.+string? (tlstr V2238)) (= "A" (pos (tlstr V2238) 0))))) (cons shen.app (cons V2237 (cons (tlstr (tlstr V2238)) (cons shen.a ()))))) ((and (shen.+string? V2238) (and (= "~" (pos V2238 0)) (and (shen.+string? (tlstr V2238)) (= "R" (pos (tlstr V2238) 0))))) (cons shen.app (cons V2237 (cons (tlstr (tlstr V2238)) (cons shen.r ()))))) ((and (shen.+string? V2238) (and (= "~" (pos V2238 0)) (and (shen.+string? (tlstr V2238)) (= "S" (pos (tlstr V2238) 0))))) (cons shen.app (cons V2237 (cons (tlstr (tlstr V2238)) (cons shen.s ()))))) ((shen.+string? V2238) (shen.factor-cn (cons cn (cons (pos V2238 0) (cons (shen.insert-l V2237 (tlstr V2238)) ()))))) ((and (cons? V2238) (and (= cn (hd V2238)) (and (cons? (tl V2238)) (and (cons? (tl (tl V2238))) (= () (tl (tl (tl V2238)))))))) (cons cn (cons (hd (tl V2238)) (cons (shen.insert-l V2237 (hd (tl (tl V2238)))) ())))) ((and (cons? V2238) (and (= shen.app (hd V2238)) (and (cons? (tl V2238)) (and (cons? (tl (tl V2238))) (and (cons? (tl (tl (tl V2238)))) (= () (tl (tl (tl (tl V2238)))))))))) (cons shen.app (cons (hd (tl V2238)) (cons (shen.insert-l V2237 (hd (tl (tl V2238)))) (tl (tl (tl V2238))))))) (true (shen.sys-error shen.insert-l))))
65
65
 
66
- (defun shen.factor-cn (V2229) (cond ((and (cons? V2229) (and (= cn (hd V2229)) (and (cons? (tl V2229)) (and (cons? (tl (tl V2229))) (and (cons? (hd (tl (tl V2229)))) (and (= cn (hd (hd (tl (tl V2229))))) (and (cons? (tl (hd (tl (tl V2229))))) (and (cons? (tl (tl (hd (tl (tl V2229)))))) (and (= () (tl (tl (tl (hd (tl (tl V2229))))))) (and (= () (tl (tl (tl V2229)))) (and (string? (hd (tl V2229))) (string? (hd (tl (hd (tl (tl V2229))))))))))))))))) (cons cn (cons (cn (hd (tl V2229)) (hd (tl (hd (tl (tl V2229)))))) (tl (tl (hd (tl (tl V2229)))))))) (true V2229)))
66
+ (defun shen.factor-cn (V2239) (cond ((and (cons? V2239) (and (= cn (hd V2239)) (and (cons? (tl V2239)) (and (cons? (tl (tl V2239))) (and (cons? (hd (tl (tl V2239)))) (and (= cn (hd (hd (tl (tl V2239))))) (and (cons? (tl (hd (tl (tl V2239))))) (and (cons? (tl (tl (hd (tl (tl V2239)))))) (and (= () (tl (tl (tl (hd (tl (tl V2239))))))) (and (= () (tl (tl (tl V2239)))) (and (string? (hd (tl V2239))) (string? (hd (tl (hd (tl (tl V2239))))))))))))))))) (cons cn (cons (cn (hd (tl V2239)) (hd (tl (hd (tl (tl V2239)))))) (tl (tl (hd (tl (tl V2239)))))))) (true V2239)))
67
67
 
68
- (defun shen.proc-nl (V2230) (cond ((= "" V2230) "") ((and (shen.+string? V2230) (and (= "~" (pos V2230 0)) (and (shen.+string? (tlstr V2230)) (= "%" (pos (tlstr V2230) 0))))) (cn (n->string 10) (shen.proc-nl (tlstr (tlstr V2230))))) ((shen.+string? V2230) (cn (pos V2230 0) (shen.proc-nl (tlstr V2230)))) (true (shen.sys-error shen.proc-nl))))
68
+ (defun shen.proc-nl (V2240) (cond ((= "" V2240) "") ((and (shen.+string? V2240) (and (= "~" (pos V2240 0)) (and (shen.+string? (tlstr V2240)) (= "%" (pos (tlstr V2240) 0))))) (cn (n->string 10) (shen.proc-nl (tlstr (tlstr V2240))))) ((shen.+string? V2240) (cn (pos V2240 0) (shen.proc-nl (tlstr V2240)))) (true (shen.sys-error shen.proc-nl))))
69
69
 
70
- (defun shen.mkstr-r (V2231 V2232) (cond ((= () V2232) V2231) ((cons? V2232) (shen.mkstr-r (cons shen.insert (cons (hd V2232) (cons V2231 ()))) (tl V2232))) (true (shen.sys-error shen.mkstr-r))))
70
+ (defun shen.mkstr-r (V2241 V2242) (cond ((= () V2242) V2241) ((cons? V2242) (shen.mkstr-r (cons shen.insert (cons (hd V2242) (cons V2241 ()))) (tl V2242))) (true (shen.sys-error shen.mkstr-r))))
71
71
 
72
- (defun shen.insert (V2233 V2234) (shen.insert-h V2233 V2234 ""))
72
+ (defun shen.insert (V2243 V2244) (shen.insert-h V2243 V2244 ""))
73
73
 
74
- (defun shen.insert-h (V2237 V2238 V2239) (cond ((= "" V2238) V2239) ((and (shen.+string? V2238) (and (= "~" (pos V2238 0)) (and (shen.+string? (tlstr V2238)) (= "A" (pos (tlstr V2238) 0))))) (cn V2239 (shen.app V2237 (tlstr (tlstr V2238)) shen.a))) ((and (shen.+string? V2238) (and (= "~" (pos V2238 0)) (and (shen.+string? (tlstr V2238)) (= "R" (pos (tlstr V2238) 0))))) (cn V2239 (shen.app V2237 (tlstr (tlstr V2238)) shen.r))) ((and (shen.+string? V2238) (and (= "~" (pos V2238 0)) (and (shen.+string? (tlstr V2238)) (= "S" (pos (tlstr V2238) 0))))) (cn V2239 (shen.app V2237 (tlstr (tlstr V2238)) shen.s))) ((shen.+string? V2238) (shen.insert-h V2237 (tlstr V2238) (cn V2239 (pos V2238 0)))) (true (shen.sys-error shen.insert-h))))
74
+ (defun shen.insert-h (V2247 V2248 V2249) (cond ((= "" V2248) V2249) ((and (shen.+string? V2248) (and (= "~" (pos V2248 0)) (and (shen.+string? (tlstr V2248)) (= "A" (pos (tlstr V2248) 0))))) (cn V2249 (shen.app V2247 (tlstr (tlstr V2248)) shen.a))) ((and (shen.+string? V2248) (and (= "~" (pos V2248 0)) (and (shen.+string? (tlstr V2248)) (= "R" (pos (tlstr V2248) 0))))) (cn V2249 (shen.app V2247 (tlstr (tlstr V2248)) shen.r))) ((and (shen.+string? V2248) (and (= "~" (pos V2248 0)) (and (shen.+string? (tlstr V2248)) (= "S" (pos (tlstr V2248) 0))))) (cn V2249 (shen.app V2247 (tlstr (tlstr V2248)) shen.s))) ((shen.+string? V2248) (shen.insert-h V2247 (tlstr V2248) (cn V2249 (pos V2248 0)))) (true (shen.sys-error shen.insert-h))))
75
75
 
76
- (defun shen.app (V2240 V2241 V2242) (cn (shen.arg->str V2240 V2242) V2241))
76
+ (defun shen.app (V2250 V2251 V2252) (cn (shen.arg->str V2250 V2252) V2251))
77
77
 
78
- (defun shen.arg->str (V2248 V2249) (cond ((= V2248 (fail)) "...") ((shen.list? V2248) (shen.list->str V2248 V2249)) ((string? V2248) (shen.str->str V2248 V2249)) ((absvector? V2248) (shen.vector->str V2248 V2249)) (true (shen.atom->str V2248))))
78
+ (defun shen.arg->str (V2258 V2259) (cond ((= V2258 (fail)) "...") ((shen.list? V2258) (shen.list->str V2258 V2259)) ((string? V2258) (shen.str->str V2258 V2259)) ((absvector? V2258) (shen.vector->str V2258 V2259)) (true (shen.atom->str V2258))))
79
79
 
80
- (defun shen.list->str (V2250 V2251) (cond ((= shen.r V2251) (@s "(" (@s (shen.iter-list V2250 shen.r (shen.maxseq)) ")"))) (true (@s "[" (@s (shen.iter-list V2250 V2251 (shen.maxseq)) "]")))))
80
+ (defun shen.list->str (V2260 V2261) (cond ((= shen.r V2261) (@s "(" (@s (shen.iter-list V2260 shen.r (shen.maxseq)) ")"))) (true (@s "[" (@s (shen.iter-list V2260 V2261 (shen.maxseq)) "]")))))
81
81
 
82
82
  (defun shen.maxseq () (value *maximum-print-sequence-size*))
83
83
 
84
- (defun shen.iter-list (V2262 V2263 V2264) (cond ((= () V2262) "") ((= 0 V2264) "... etc") ((and (cons? V2262) (= () (tl V2262))) (shen.arg->str (hd V2262) V2263)) ((cons? V2262) (@s (shen.arg->str (hd V2262) V2263) (@s " " (shen.iter-list (tl V2262) V2263 (- V2264 1))))) (true (@s "|" (@s " " (shen.arg->str V2262 V2263))))))
84
+ (defun shen.iter-list (V2272 V2273 V2274) (cond ((= () V2272) "") ((= 0 V2274) "... etc") ((and (cons? V2272) (= () (tl V2272))) (shen.arg->str (hd V2272) V2273)) ((cons? V2272) (@s (shen.arg->str (hd V2272) V2273) (@s " " (shen.iter-list (tl V2272) V2273 (- V2274 1))))) (true (@s "|" (@s " " (shen.arg->str V2272 V2273))))))
85
85
 
86
- (defun shen.str->str (V2269 V2270) (cond ((= shen.a V2270) V2269) (true (@s (n->string 34) (@s V2269 (n->string 34))))))
86
+ (defun shen.str->str (V2279 V2280) (cond ((= shen.a V2280) V2279) (true (@s (n->string 34) (@s V2279 (n->string 34))))))
87
87
 
88
- (defun shen.vector->str (V2271 V2272) (if (shen.print-vector? V2271) ((<-address V2271 0) V2271) (if (vector? V2271) (@s "<" (@s (shen.iter-vector V2271 1 V2272 (shen.maxseq)) ">")) (@s "<" (@s "<" (@s (shen.iter-vector V2271 0 V2272 (shen.maxseq)) ">>"))))))
88
+ (defun shen.vector->str (V2281 V2282) (if (shen.print-vector? V2281) ((<-address V2281 0) V2281) (if (vector? V2281) (@s "<" (@s (shen.iter-vector V2281 1 V2282 (shen.maxseq)) ">")) (@s "<" (@s "<" (@s (shen.iter-vector V2281 0 V2282 (shen.maxseq)) ">>"))))))
89
89
 
90
- (defun shen.print-vector? (V2273) (let Zero (<-address V2273 0) (if (= Zero shen.tuple) true (if (= Zero shen.pvar) true (if (not (number? Zero)) (shen.fbound? Zero) false)))))
90
+ (defun shen.print-vector? (V2283) (let Zero (<-address V2283 0) (if (= Zero shen.tuple) true (if (= Zero shen.pvar) true (if (not (number? Zero)) (shen.fbound? Zero) false)))))
91
91
 
92
- (defun shen.fbound? (V2274) (trap-error (do (ps V2274) true) (lambda E false)))
92
+ (defun shen.fbound? (V2284) (trap-error (do (ps V2284) true) (lambda E false)))
93
93
 
94
- (defun shen.tuple (V2275) (cn "(@p " (shen.app (<-address V2275 1) (cn " " (shen.app (<-address V2275 2) ")" shen.s)) shen.s)))
94
+ (defun shen.tuple (V2285) (cn "(@p " (shen.app (<-address V2285 1) (cn " " (shen.app (<-address V2285 2) ")" shen.s)) shen.s)))
95
95
 
96
- (defun shen.iter-vector (V2282 V2283 V2284 V2285) (cond ((= 0 V2285) "... etc") (true (let Item (trap-error (<-address V2282 V2283) (lambda E shen.out-of-bounds)) (let Next (trap-error (<-address V2282 (+ V2283 1)) (lambda E shen.out-of-bounds)) (if (= Item shen.out-of-bounds) "" (if (= Next shen.out-of-bounds) (shen.arg->str Item V2284) (@s (shen.arg->str Item V2284) (@s " " (shen.iter-vector V2282 (+ V2283 1) V2284 (- V2285 1)))))))))))
96
+ (defun shen.iter-vector (V2292 V2293 V2294 V2295) (cond ((= 0 V2295) "... etc") (true (let Item (trap-error (<-address V2292 V2293) (lambda E shen.out-of-bounds)) (let Next (trap-error (<-address V2292 (+ V2293 1)) (lambda E shen.out-of-bounds)) (if (= Item shen.out-of-bounds) "" (if (= Next shen.out-of-bounds) (shen.arg->str Item V2294) (@s (shen.arg->str Item V2294) (@s " " (shen.iter-vector V2292 (+ V2293 1) V2294 (- V2295 1)))))))))))
97
97
 
98
- (defun shen.atom->str (V2286) (trap-error (str V2286) (lambda E (shen.funexstring))))
98
+ (defun shen.atom->str (V2296) (trap-error (str V2296) (lambda E (shen.funexstring))))
99
99
 
100
100
  (defun shen.funexstring () (@s "" (@s "f" (@s "u" (@s "n" (@s "e" (@s (shen.arg->str (gensym (intern "x")) shen.a) "")))))))
101
101
 
102
- (defun shen.list? (V2287) (or (empty? V2287) (cons? V2287)))
102
+ (defun shen.list? (V2297) (or (empty? V2297) (cons? V2297)))
103
103
 
104
104
 
105
105