shen-ruby 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,124 +47,120 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun shen.typecheck (V2785 V2786) (let Curry (shen.curry V2785) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2786)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
50
+ "(defun shen.typecheck (V2848 V2849) (let Curry (shen.curry V2848) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2849)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
51
51
 
52
- (defun shen.curry (V2787) (cond ((and (cons? V2787) (shen.special? (hd V2787))) (cons (hd V2787) (map shen.curry (tl V2787)))) ((and (cons? V2787) (and (cons? (tl V2787)) (shen.extraspecial? (hd V2787)))) V2787) ((and (cons? V2787) (and (cons? (tl V2787)) (cons? (tl (tl V2787))))) (shen.curry (cons (cons (hd V2787) (cons (hd (tl V2787)) ())) (tl (tl V2787))))) ((and (cons? V2787) (and (cons? (tl V2787)) (= () (tl (tl V2787))))) (cons (shen.curry (hd V2787)) (cons (shen.curry (hd (tl V2787))) ()))) (true V2787)))
52
+ (defun shen.curry (V2850) (cond ((and (cons? V2850) (shen.special? (hd V2850))) (cons (hd V2850) (map shen.curry (tl V2850)))) ((and (cons? V2850) (and (cons? (tl V2850)) (shen.extraspecial? (hd V2850)))) V2850) ((and (cons? V2850) (and (cons? (tl V2850)) (cons? (tl (tl V2850))))) (shen.curry (cons (cons (hd V2850) (cons (hd (tl V2850)) ())) (tl (tl V2850))))) ((and (cons? V2850) (and (cons? (tl V2850)) (= () (tl (tl V2850))))) (cons (shen.curry (hd V2850)) (cons (shen.curry (hd (tl V2850))) ()))) (true V2850)))
53
53
 
54
- (defun shen.special? (V2788) (element? V2788 (value shen.*special*)))
54
+ (defun shen.special? (V2851) (element? V2851 (value shen.*special*)))
55
55
 
56
- (defun shen.extraspecial? (V2789) (element? V2789 (value shen.*extraspecial*)))
56
+ (defun shen.extraspecial? (V2852) (element? V2852 (value shen.*extraspecial*)))
57
57
 
58
- (defun shen.t* (V2790 V2791 V2792 V2793) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2792) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2792 (freeze (bind Error (shen.errormaxinfs) V2792 V2793))))) (if (= Case false) (let Case (let V2779 (shen.lazyderef V2790 V2792) (if (= fail V2779) (do (shen.incinfs) (cut Throwcontrol V2792 (freeze (shen.prolog-failure V2792 V2793)))) false)) (if (= Case false) (let Case (let V2780 (shen.lazyderef V2790 V2792) (if (cons? V2780) (let X (hd V2780) (let V2781 (shen.lazyderef (tl V2780) V2792) (if (cons? V2781) (let V2782 (shen.lazyderef (hd V2781) V2792) (if (= : V2782) (let V2783 (shen.lazyderef (tl V2781) V2792) (if (cons? V2783) (let A (hd V2783) (let V2784 (shen.lazyderef (tl V2783) V2792) (if (= () V2784) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2792 (freeze (cut Throwcontrol V2792 (freeze (shen.th* X A V2791 V2792 V2793)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2792) (do (shen.incinfs) (shen.show V2790 V2791 V2792 (freeze (bind Datatypes (value shen.*datatypes*) V2792 (freeze (shen.udefs* V2790 V2791 Datatypes V2792 V2793))))))) Case)) Case)) Case)))))
58
+ (defun shen.t* (V2853 V2854 V2855 V2856) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2855) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2855 (freeze (bind Error (shen.errormaxinfs) V2855 V2856))))) (if (= Case false) (let Case (let V2842 (shen.lazyderef V2853 V2855) (if (= fail V2842) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (shen.prolog-failure V2855 V2856)))) false)) (if (= Case false) (let Case (let V2843 (shen.lazyderef V2853 V2855) (if (cons? V2843) (let X (hd V2843) (let V2844 (shen.lazyderef (tl V2843) V2855) (if (cons? V2844) (let V2845 (shen.lazyderef (hd V2844) V2855) (if (= : V2845) (let V2846 (shen.lazyderef (tl V2844) V2855) (if (cons? V2846) (let A (hd V2846) (let V2847 (shen.lazyderef (tl V2846) V2855) (if (= () V2847) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* X A V2854 V2855 V2856)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2855) (do (shen.incinfs) (shen.show V2853 V2854 V2855 (freeze (bind Datatypes (value shen.*datatypes*) V2855 (freeze (shen.udefs* V2853 V2854 Datatypes V2855 V2856))))))) 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 (V2798) (cond ((= + V2798) (set shen.*shen-type-theory-enabled?* true)) ((= - V2798) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
62
+ (defun enable-type-theory (V2861) (cond ((= + V2861) (set shen.*shen-type-theory-enabled?* true)) ((= - V2861) (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 (V2807 V2808) false)
65
+ (defun shen.prolog-failure (V2870 V2871) 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* (V2809 V2810 V2811 V2812 V2813) (let Case (let V2775 (shen.lazyderef V2811 V2812) (if (cons? V2775) (let D (hd V2775) (do (shen.incinfs) (call (cons D (cons V2809 (cons V2810 ()))) V2812 V2813))) false)) (if (= Case false) (let V2776 (shen.lazyderef V2811 V2812) (if (cons? V2776) (let Ds (tl V2776) (do (shen.incinfs) (shen.udefs* V2809 V2810 Ds V2812 V2813))) false)) Case)))
71
+ (defun shen.udefs* (V2872 V2873 V2874 V2875 V2876) (let Case (let V2838 (shen.lazyderef V2874 V2875) (if (cons? V2838) (let D (hd V2838) (do (shen.incinfs) (call (cons D (cons V2872 (cons V2873 ()))) V2875 V2876))) false)) (if (= Case false) (let V2839 (shen.lazyderef V2874 V2875) (if (cons? V2839) (let Ds (tl V2839) (do (shen.incinfs) (shen.udefs* V2872 V2873 Ds V2875 V2876))) false)) Case)))
72
72
 
73
- (defun shen.th* (V2814 V2815 V2816 V2817 V2818) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2814 (cons : (cons V2815 ()))) V2816 V2817 (freeze (fwhen false V2817 V2818)))) (if (= Case false) (let Case (let F (shen.newpv V2817) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2814 V2817)) V2817 (freeze (bind F (shen.sigf (shen.lazyderef V2814 V2817)) V2817 (freeze (call (cons F (cons V2815 ())) V2817 V2818))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2814 V2815 V2817 V2818)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2814 V2815 V2816 V2817 V2818)) (if (= Case false) (let Case (let V2655 (shen.lazyderef V2814 V2817) (if (cons? V2655) (let F (hd V2655) (let V2656 (shen.lazyderef (tl V2655) V2817) (if (= () V2656) (do (shen.incinfs) (shen.th* F (cons --> (cons V2815 ())) V2816 V2817 V2818)) false))) false)) (if (= Case false) (let Case (let V2657 (shen.lazyderef V2814 V2817) (if (cons? V2657) (let F (hd V2657) (let V2658 (shen.lazyderef (tl V2657) V2817) (if (cons? V2658) (let X (hd V2658) (let V2659 (shen.lazyderef (tl V2658) V2817) (if (= () V2659) (let B (shen.newpv V2817) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2815 ()))) V2816 V2817 (freeze (shen.th* X B V2816 V2817 V2818))))) false))) false))) false)) (if (= Case false) (let Case (let V2660 (shen.lazyderef V2814 V2817) (if (cons? V2660) (let V2661 (shen.lazyderef (hd V2660) V2817) (if (= cons V2661) (let V2662 (shen.lazyderef (tl V2660) V2817) (if (cons? V2662) (let X (hd V2662) (let V2663 (shen.lazyderef (tl V2662) V2817) (if (cons? V2663) (let Y (hd V2663) (let V2664 (shen.lazyderef (tl V2663) V2817) (if (= () V2664) (let V2665 (shen.lazyderef V2815 V2817) (if (cons? V2665) (let V2666 (shen.lazyderef (hd V2665) V2817) (if (= list V2666) (let V2667 (shen.lazyderef (tl V2665) V2817) (if (cons? V2667) (let A (hd V2667) (let V2668 (shen.lazyderef (tl V2667) V2817) (if (= () V2668) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2668) (do (shen.bindv V2668 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2668 V2817) Result))) false)))) (if (shen.pvar? V2667) (let A (shen.newpv V2817) (do (shen.bindv V2667 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2667 V2817) Result)))) false))) (if (shen.pvar? V2666) (do (shen.bindv V2666 list V2817) (let Result (let V2669 (shen.lazyderef (tl V2665) V2817) (if (cons? V2669) (let A (hd V2669) (let V2670 (shen.lazyderef (tl V2669) V2817) (if (= () V2670) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2670) (do (shen.bindv V2670 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2670 V2817) Result))) false)))) (if (shen.pvar? V2669) (let A (shen.newpv V2817) (do (shen.bindv V2669 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2669 V2817) Result)))) false))) (do (shen.unbindv V2666 V2817) Result))) false))) (if (shen.pvar? V2665) (let A (shen.newpv V2817) (do (shen.bindv V2665 (cons list (cons A ())) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2665 V2817) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2671 (shen.lazyderef V2814 V2817) (if (cons? V2671) (let V2672 (shen.lazyderef (hd V2671) V2817) (if (= @p V2672) (let V2673 (shen.lazyderef (tl V2671) V2817) (if (cons? V2673) (let X (hd V2673) (let V2674 (shen.lazyderef (tl V2673) V2817) (if (cons? V2674) (let Y (hd V2674) (let V2675 (shen.lazyderef (tl V2674) V2817) (if (= () V2675) (let V2676 (shen.lazyderef V2815 V2817) (if (cons? V2676) (let A (hd V2676) (let V2677 (shen.lazyderef (tl V2676) V2817) (if (cons? V2677) (let V2678 (shen.lazyderef (hd V2677) V2817) (if (= * V2678) (let V2679 (shen.lazyderef (tl V2677) V2817) (if (cons? V2679) (let B (hd V2679) (let V2680 (shen.lazyderef (tl V2679) V2817) (if (= () V2680) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (if (shen.pvar? V2680) (do (shen.bindv V2680 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2680 V2817) Result))) false)))) (if (shen.pvar? V2679) (let B (shen.newpv V2817) (do (shen.bindv V2679 (cons B ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2679 V2817) Result)))) false))) (if (shen.pvar? V2678) (do (shen.bindv V2678 * V2817) (let Result (let V2681 (shen.lazyderef (tl V2677) V2817) (if (cons? V2681) (let B (hd V2681) (let V2682 (shen.lazyderef (tl V2681) V2817) (if (= () V2682) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (if (shen.pvar? V2682) (do (shen.bindv V2682 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2682 V2817) Result))) false)))) (if (shen.pvar? V2681) (let B (shen.newpv V2817) (do (shen.bindv V2681 (cons B ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2681 V2817) Result)))) false))) (do (shen.unbindv V2678 V2817) Result))) false))) (if (shen.pvar? V2677) (let B (shen.newpv V2817) (do (shen.bindv V2677 (cons * (cons B ())) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2677 V2817) Result)))) false)))) (if (shen.pvar? V2676) (let A (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.bindv V2676 (cons A (cons * (cons B ()))) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2676 V2817) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2683 (shen.lazyderef V2814 V2817) (if (cons? V2683) (let V2684 (shen.lazyderef (hd V2683) V2817) (if (= @v V2684) (let V2685 (shen.lazyderef (tl V2683) V2817) (if (cons? V2685) (let X (hd V2685) (let V2686 (shen.lazyderef (tl V2685) V2817) (if (cons? V2686) (let Y (hd V2686) (let V2687 (shen.lazyderef (tl V2686) V2817) (if (= () V2687) (let V2688 (shen.lazyderef V2815 V2817) (if (cons? V2688) (let V2689 (shen.lazyderef (hd V2688) V2817) (if (= vector V2689) (let V2690 (shen.lazyderef (tl V2688) V2817) (if (cons? V2690) (let A (hd V2690) (let V2691 (shen.lazyderef (tl V2690) V2817) (if (= () V2691) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2691) (do (shen.bindv V2691 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2691 V2817) Result))) false)))) (if (shen.pvar? V2690) (let A (shen.newpv V2817) (do (shen.bindv V2690 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2690 V2817) Result)))) false))) (if (shen.pvar? V2689) (do (shen.bindv V2689 vector V2817) (let Result (let V2692 (shen.lazyderef (tl V2688) V2817) (if (cons? V2692) (let A (hd V2692) (let V2693 (shen.lazyderef (tl V2692) V2817) (if (= () V2693) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2693) (do (shen.bindv V2693 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2693 V2817) Result))) false)))) (if (shen.pvar? V2692) (let A (shen.newpv V2817) (do (shen.bindv V2692 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2692 V2817) Result)))) false))) (do (shen.unbindv V2689 V2817) Result))) false))) (if (shen.pvar? V2688) (let A (shen.newpv V2817) (do (shen.bindv V2688 (cons vector (cons A ())) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2688 V2817) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2694 (shen.lazyderef V2814 V2817) (if (cons? V2694) (let V2695 (shen.lazyderef (hd V2694) V2817) (if (= @s V2695) (let V2696 (shen.lazyderef (tl V2694) V2817) (if (cons? V2696) (let X (hd V2696) (let V2697 (shen.lazyderef (tl V2696) V2817) (if (cons? V2697) (let Y (hd V2697) (let V2698 (shen.lazyderef (tl V2697) V2817) (if (= () V2698) (let V2699 (shen.lazyderef V2815 V2817) (if (= string V2699) (do (shen.incinfs) (shen.th* X string V2816 V2817 (freeze (shen.th* Y string V2816 V2817 V2818)))) (if (shen.pvar? V2699) (do (shen.bindv V2699 string V2817) (let Result (do (shen.incinfs) (shen.th* X string V2816 V2817 (freeze (shen.th* Y string V2816 V2817 V2818)))) (do (shen.unbindv V2699 V2817) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2700 (shen.lazyderef V2814 V2817) (if (cons? V2700) (let V2701 (shen.lazyderef (hd V2700) V2817) (if (= lambda V2701) (let V2702 (shen.lazyderef (tl V2700) V2817) (if (cons? V2702) (let X (hd V2702) (let V2703 (shen.lazyderef (tl V2702) V2817) (if (cons? V2703) (let Y (hd V2703) (let V2704 (shen.lazyderef (tl V2703) V2817) (if (= () V2704) (let V2705 (shen.lazyderef V2815 V2817) (if (cons? V2705) (let A (hd V2705) (let V2706 (shen.lazyderef (tl V2705) V2817) (if (cons? V2706) (let V2707 (shen.lazyderef (hd V2706) V2817) (if (= --> V2707) (let V2708 (shen.lazyderef (tl V2706) V2817) (if (cons? V2708) (let B (hd V2708) (let V2709 (shen.lazyderef (tl V2708) V2817) (if (= () V2709) (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (if (shen.pvar? V2709) (do (shen.bindv V2709 () V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2709 V2817) Result))) false)))) (if (shen.pvar? V2708) (let B (shen.newpv V2817) (do (shen.bindv V2708 (cons B ()) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2708 V2817) Result)))) false))) (if (shen.pvar? V2707) (do (shen.bindv V2707 --> V2817) (let Result (let V2710 (shen.lazyderef (tl V2706) V2817) (if (cons? V2710) (let B (hd V2710) (let V2711 (shen.lazyderef (tl V2710) V2817) (if (= () V2711) (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (if (shen.pvar? V2711) (do (shen.bindv V2711 () V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2711 V2817) Result))) false)))) (if (shen.pvar? V2710) (let B (shen.newpv V2817) (do (shen.bindv V2710 (cons B ()) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2710 V2817) Result)))) false))) (do (shen.unbindv V2707 V2817) Result))) false))) (if (shen.pvar? V2706) (let B (shen.newpv V2817) (do (shen.bindv V2706 (cons --> (cons B ())) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2706 V2817) Result)))) false)))) (if (shen.pvar? V2705) (let A (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.bindv V2705 (cons A (cons --> (cons B ()))) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2705 V2817) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2712 (shen.lazyderef V2814 V2817) (if (cons? V2712) (let V2713 (shen.lazyderef (hd V2712) V2817) (if (= let V2713) (let V2714 (shen.lazyderef (tl V2712) V2817) (if (cons? V2714) (let X (hd V2714) (let V2715 (shen.lazyderef (tl V2714) V2817) (if (cons? V2715) (let Y (hd V2715) (let V2716 (shen.lazyderef (tl V2715) V2817) (if (cons? V2716) (let Z (hd V2716) (let V2717 (shen.lazyderef (tl V2716) V2817) (if (= () V2717) (let W (shen.newpv V2817) (let X&& (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* Y B V2816 V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Z V2817)) V2817 (freeze (shen.th* W V2815 (cons (cons X&& (cons : (cons B ()))) V2816) V2817 V2818))))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2718 (shen.lazyderef V2814 V2817) (if (cons? V2718) (let V2719 (shen.lazyderef (hd V2718) V2817) (if (= open V2719) (let V2720 (shen.lazyderef (tl V2718) V2817) (if (cons? V2720) (let V2721 (shen.lazyderef (hd V2720) V2817) (if (= file V2721) (let V2722 (shen.lazyderef (tl V2720) V2817) (if (cons? V2722) (let FileName (hd V2722) (let V2723 (shen.lazyderef (tl V2722) V2817) (if (cons? V2723) (let Direction2651 (hd V2723) (let V2724 (shen.lazyderef (tl V2723) V2817) (if (= () V2724) (let V2725 (shen.lazyderef V2815 V2817) (if (cons? V2725) (let V2726 (shen.lazyderef (hd V2725) V2817) (if (= stream V2726) (let V2727 (shen.lazyderef (tl V2725) V2817) (if (cons? V2727) (let Direction (hd V2727) (let V2728 (shen.lazyderef (tl V2727) V2817) (if (= () V2728) (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (if (shen.pvar? V2728) (do (shen.bindv V2728 () V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2728 V2817) Result))) false)))) (if (shen.pvar? V2727) (let Direction (shen.newpv V2817) (do (shen.bindv V2727 (cons Direction ()) V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2727 V2817) Result)))) false))) (if (shen.pvar? V2726) (do (shen.bindv V2726 stream V2817) (let Result (let V2729 (shen.lazyderef (tl V2725) V2817) (if (cons? V2729) (let Direction (hd V2729) (let V2730 (shen.lazyderef (tl V2729) V2817) (if (= () V2730) (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (if (shen.pvar? V2730) (do (shen.bindv V2730 () V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2730 V2817) Result))) false)))) (if (shen.pvar? V2729) (let Direction (shen.newpv V2817) (do (shen.bindv V2729 (cons Direction ()) V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2729 V2817) Result)))) false))) (do (shen.unbindv V2726 V2817) Result))) false))) (if (shen.pvar? V2725) (let Direction (shen.newpv V2817) (do (shen.bindv V2725 (cons stream (cons Direction ())) V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2725 V2817) Result)))) false))) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2731 (shen.lazyderef V2814 V2817) (if (cons? V2731) (let V2732 (shen.lazyderef (hd V2731) V2817) (if (= type V2732) (let V2733 (shen.lazyderef (tl V2731) V2817) (if (cons? V2733) (let X (hd V2733) (let V2734 (shen.lazyderef (tl V2733) V2817) (if (cons? V2734) (let A (hd V2734) (let V2735 (shen.lazyderef (tl V2734) V2817) (if (= () V2735) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (unify A V2815 V2817 (freeze (shen.th* X A V2816 V2817 V2818)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2736 (shen.lazyderef V2814 V2817) (if (cons? V2736) (let V2737 (shen.lazyderef (hd V2736) V2817) (if (= input+ V2737) (let V2738 (shen.lazyderef (tl V2736) V2817) (if (cons? V2738) (let V2739 (shen.lazyderef (hd V2738) V2817) (if (= : V2739) (let V2740 (shen.lazyderef (tl V2738) V2817) (if (cons? V2740) (let A (hd V2740) (let V2741 (shen.lazyderef (tl V2740) V2817) (if (= () V2741) (let C (shen.newpv V2817) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2817)) V2817 (freeze (unify V2815 C V2817 V2818))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2742 (shen.lazyderef V2814 V2817) (if (cons? V2742) (let V2743 (shen.lazyderef (hd V2742) V2817) (if (= where V2743) (let V2744 (shen.lazyderef (tl V2742) V2817) (if (cons? V2744) (let P (hd V2744) (let V2745 (shen.lazyderef (tl V2744) V2817) (if (cons? V2745) (let X (hd V2745) (let V2746 (shen.lazyderef (tl V2745) V2817) (if (= () V2746) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* P boolean V2816 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* X V2815 (cons (cons P (cons : (cons verified ()))) V2816) V2817 V2818)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2747 (shen.lazyderef V2814 V2817) (if (cons? V2747) (let V2748 (shen.lazyderef (hd V2747) V2817) (if (= set V2748) (let V2749 (shen.lazyderef (tl V2747) V2817) (if (cons? V2749) (let Var (hd V2749) (let V2750 (shen.lazyderef (tl V2749) V2817) (if (cons? V2750) (let Val (hd V2750) (let V2751 (shen.lazyderef (tl V2750) V2817) (if (= () V2751) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* (cons value (cons Var ())) V2815 V2816 V2817 (freeze (shen.th* Val V2815 V2816 V2817 V2818)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2752 (shen.lazyderef V2814 V2817) (if (cons? V2752) (let V2753 (shen.lazyderef (hd V2752) V2817) (if (= shen.<-sem V2753) (let V2754 (shen.lazyderef (tl V2752) V2817) (if (cons? V2754) (let F (hd V2754) (let V2755 (shen.lazyderef (tl V2754) V2817) (if (= () V2755) (let A (shen.newpv V2817) (let F&& (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2816 V2817 (freeze (cut Throwcontrol V2817 (freeze (bind F&& (concat && (shen.lazyderef F V2817)) V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* F&& V2815 (cons (cons F&& (cons : (cons B ()))) V2816) V2817 V2818))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2756 (shen.lazyderef V2814 V2817) (if (cons? V2756) (let V2757 (shen.lazyderef (hd V2756) V2817) (if (= fail V2757) (let V2758 (shen.lazyderef (tl V2756) V2817) (if (= () V2758) (let V2759 (shen.lazyderef V2815 V2817) (if (= symbol V2759) (do (shen.incinfs) (thaw V2818)) (if (shen.pvar? V2759) (do (shen.bindv V2759 symbol V2817) (let Result (do (shen.incinfs) (thaw V2818)) (do (shen.unbindv V2759 V2817) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2817) (do (shen.incinfs) (shen.t*-hyps V2816 NewHyp V2817 (freeze (shen.th* V2814 V2815 NewHyp V2817 V2818))))) (if (= Case false) (let Case (let V2760 (shen.lazyderef V2814 V2817) (if (cons? V2760) (let V2761 (shen.lazyderef (hd V2760) V2817) (if (= define V2761) (let V2762 (shen.lazyderef (tl V2760) V2817) (if (cons? V2762) (let F (hd V2762) (let X (tl V2762) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.t*-def (cons define (cons F X)) V2815 V2816 V2817 V2818)))))) false)) false)) false)) (if (= Case false) (let Case (let V2763 (shen.lazyderef V2814 V2817) (if (cons? V2763) (let V2764 (shen.lazyderef (hd V2763) V2817) (if (= defcc V2764) (let V2765 (shen.lazyderef (tl V2763) V2817) (if (cons? V2765) (let F (hd V2765) (let X (tl V2765) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2815 V2816 V2817 V2818)))))) false)) false)) false)) (if (= Case false) (let Case (let V2766 (shen.lazyderef V2814 V2817) (if (cons? V2766) (let V2767 (shen.lazyderef (hd V2766) V2817) (if (= shen.process-datatype V2767) (let V2768 (shen.lazyderef V2815 V2817) (if (= symbol V2768) (do (shen.incinfs) (thaw V2818)) (if (shen.pvar? V2768) (do (shen.bindv V2768 symbol V2817) (let Result (do (shen.incinfs) (thaw V2818)) (do (shen.unbindv V2768 V2817) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2769 (shen.lazyderef V2814 V2817) (if (cons? V2769) (let V2770 (shen.lazyderef (hd V2769) V2817) (if (= shen.synonyms-help V2770) (let V2771 (shen.lazyderef V2815 V2817) (if (= symbol V2771) (do (shen.incinfs) (thaw V2818)) (if (shen.pvar? V2771) (do (shen.bindv V2771 symbol V2817) (let Result (do (shen.incinfs) (thaw V2818)) (do (shen.unbindv V2771 V2817) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2817) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2817 (freeze (shen.udefs* (cons V2814 (cons : (cons V2815 ()))) V2816 Datatypes V2817 V2818))))) 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* (V2877 V2878 V2879 V2880 V2881) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2877 (cons : (cons V2878 ()))) V2879 V2880 (freeze (fwhen false V2880 V2881)))) (if (= Case false) (let Case (let F (shen.newpv V2880) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2877 V2880)) V2880 (freeze (bind F (shen.sigf (shen.lazyderef V2877 V2880)) V2880 (freeze (call (cons F (cons V2878 ())) V2880 V2881))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2877 V2878 V2880 V2881)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2877 V2878 V2879 V2880 V2881)) (if (= Case false) (let Case (let V2717 (shen.lazyderef V2877 V2880) (if (cons? V2717) (let F (hd V2717) (let V2718 (shen.lazyderef (tl V2717) V2880) (if (= () V2718) (do (shen.incinfs) (shen.th* F (cons --> (cons V2878 ())) V2879 V2880 V2881)) false))) false)) (if (= Case false) (let Case (let V2719 (shen.lazyderef V2877 V2880) (if (cons? V2719) (let F (hd V2719) (let V2720 (shen.lazyderef (tl V2719) V2880) (if (cons? V2720) (let X (hd V2720) (let V2721 (shen.lazyderef (tl V2720) V2880) (if (= () V2721) (let B (shen.newpv V2880) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2878 ()))) V2879 V2880 (freeze (shen.th* X B V2879 V2880 V2881))))) false))) false))) false)) (if (= Case false) (let Case (let V2722 (shen.lazyderef V2877 V2880) (if (cons? V2722) (let V2723 (shen.lazyderef (hd V2722) V2880) (if (= cons V2723) (let V2724 (shen.lazyderef (tl V2722) V2880) (if (cons? V2724) (let X (hd V2724) (let V2725 (shen.lazyderef (tl V2724) V2880) (if (cons? V2725) (let Y (hd V2725) (let V2726 (shen.lazyderef (tl V2725) V2880) (if (= () V2726) (let V2727 (shen.lazyderef V2878 V2880) (if (cons? V2727) (let V2728 (shen.lazyderef (hd V2727) V2880) (if (= list V2728) (let V2729 (shen.lazyderef (tl V2727) V2880) (if (cons? V2729) (let A (hd V2729) (let V2730 (shen.lazyderef (tl V2729) V2880) (if (= () V2730) (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (if (shen.pvar? V2730) (do (shen.bindv V2730 () V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2730 V2880) Result))) false)))) (if (shen.pvar? V2729) (let A (shen.newpv V2880) (do (shen.bindv V2729 (cons A ()) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2729 V2880) Result)))) false))) (if (shen.pvar? V2728) (do (shen.bindv V2728 list V2880) (let Result (let V2731 (shen.lazyderef (tl V2727) V2880) (if (cons? V2731) (let A (hd V2731) (let V2732 (shen.lazyderef (tl V2731) V2880) (if (= () V2732) (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (if (shen.pvar? V2732) (do (shen.bindv V2732 () V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2732 V2880) Result))) false)))) (if (shen.pvar? V2731) (let A (shen.newpv V2880) (do (shen.bindv V2731 (cons A ()) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2731 V2880) Result)))) false))) (do (shen.unbindv V2728 V2880) Result))) false))) (if (shen.pvar? V2727) (let A (shen.newpv V2880) (do (shen.bindv V2727 (cons list (cons A ())) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons list (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2727 V2880) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2733 (shen.lazyderef V2877 V2880) (if (cons? V2733) (let V2734 (shen.lazyderef (hd V2733) V2880) (if (= @p V2734) (let V2735 (shen.lazyderef (tl V2733) V2880) (if (cons? V2735) (let X (hd V2735) (let V2736 (shen.lazyderef (tl V2735) V2880) (if (cons? V2736) (let Y (hd V2736) (let V2737 (shen.lazyderef (tl V2736) V2880) (if (= () V2737) (let V2738 (shen.lazyderef V2878 V2880) (if (cons? V2738) (let A (hd V2738) (let V2739 (shen.lazyderef (tl V2738) V2880) (if (cons? V2739) (let V2740 (shen.lazyderef (hd V2739) V2880) (if (= * V2740) (let V2741 (shen.lazyderef (tl V2739) V2880) (if (cons? V2741) (let B (hd V2741) (let V2742 (shen.lazyderef (tl V2741) V2880) (if (= () V2742) (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (if (shen.pvar? V2742) (do (shen.bindv V2742 () V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (do (shen.unbindv V2742 V2880) Result))) false)))) (if (shen.pvar? V2741) (let B (shen.newpv V2880) (do (shen.bindv V2741 (cons B ()) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (do (shen.unbindv V2741 V2880) Result)))) false))) (if (shen.pvar? V2740) (do (shen.bindv V2740 * V2880) (let Result (let V2743 (shen.lazyderef (tl V2739) V2880) (if (cons? V2743) (let B (hd V2743) (let V2744 (shen.lazyderef (tl V2743) V2880) (if (= () V2744) (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (if (shen.pvar? V2744) (do (shen.bindv V2744 () V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (do (shen.unbindv V2744 V2880) Result))) false)))) (if (shen.pvar? V2743) (let B (shen.newpv V2880) (do (shen.bindv V2743 (cons B ()) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (do (shen.unbindv V2743 V2880) Result)))) false))) (do (shen.unbindv V2740 V2880) Result))) false))) (if (shen.pvar? V2739) (let B (shen.newpv V2880) (do (shen.bindv V2739 (cons * (cons B ())) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (do (shen.unbindv V2739 V2880) Result)))) false)))) (if (shen.pvar? V2738) (let A (shen.newpv V2880) (let B (shen.newpv V2880) (do (shen.bindv V2738 (cons A (cons * (cons B ()))) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y B V2879 V2880 V2881)))) (do (shen.unbindv V2738 V2880) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2745 (shen.lazyderef V2877 V2880) (if (cons? V2745) (let V2746 (shen.lazyderef (hd V2745) V2880) (if (= @v V2746) (let V2747 (shen.lazyderef (tl V2745) V2880) (if (cons? V2747) (let X (hd V2747) (let V2748 (shen.lazyderef (tl V2747) V2880) (if (cons? V2748) (let Y (hd V2748) (let V2749 (shen.lazyderef (tl V2748) V2880) (if (= () V2749) (let V2750 (shen.lazyderef V2878 V2880) (if (cons? V2750) (let V2751 (shen.lazyderef (hd V2750) V2880) (if (= vector V2751) (let V2752 (shen.lazyderef (tl V2750) V2880) (if (cons? V2752) (let A (hd V2752) (let V2753 (shen.lazyderef (tl V2752) V2880) (if (= () V2753) (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (if (shen.pvar? V2753) (do (shen.bindv V2753 () V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2753 V2880) Result))) false)))) (if (shen.pvar? V2752) (let A (shen.newpv V2880) (do (shen.bindv V2752 (cons A ()) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2752 V2880) Result)))) false))) (if (shen.pvar? V2751) (do (shen.bindv V2751 vector V2880) (let Result (let V2754 (shen.lazyderef (tl V2750) V2880) (if (cons? V2754) (let A (hd V2754) (let V2755 (shen.lazyderef (tl V2754) V2880) (if (= () V2755) (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (if (shen.pvar? V2755) (do (shen.bindv V2755 () V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2755 V2880) Result))) false)))) (if (shen.pvar? V2754) (let A (shen.newpv V2880) (do (shen.bindv V2754 (cons A ()) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2754 V2880) Result)))) false))) (do (shen.unbindv V2751 V2880) Result))) false))) (if (shen.pvar? V2750) (let A (shen.newpv V2880) (do (shen.bindv V2750 (cons vector (cons A ())) V2880) (let Result (do (shen.incinfs) (shen.th* X A V2879 V2880 (freeze (shen.th* Y (cons vector (cons A ())) V2879 V2880 V2881)))) (do (shen.unbindv V2750 V2880) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2756 (shen.lazyderef V2877 V2880) (if (cons? V2756) (let V2757 (shen.lazyderef (hd V2756) V2880) (if (= @s V2757) (let V2758 (shen.lazyderef (tl V2756) V2880) (if (cons? V2758) (let X (hd V2758) (let V2759 (shen.lazyderef (tl V2758) V2880) (if (cons? V2759) (let Y (hd V2759) (let V2760 (shen.lazyderef (tl V2759) V2880) (if (= () V2760) (let V2761 (shen.lazyderef V2878 V2880) (if (= string V2761) (do (shen.incinfs) (shen.th* X string V2879 V2880 (freeze (shen.th* Y string V2879 V2880 V2881)))) (if (shen.pvar? V2761) (do (shen.bindv V2761 string V2880) (let Result (do (shen.incinfs) (shen.th* X string V2879 V2880 (freeze (shen.th* Y string V2879 V2880 V2881)))) (do (shen.unbindv V2761 V2880) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2762 (shen.lazyderef V2877 V2880) (if (cons? V2762) (let V2763 (shen.lazyderef (hd V2762) V2880) (if (= lambda V2763) (let V2764 (shen.lazyderef (tl V2762) V2880) (if (cons? V2764) (let X (hd V2764) (let V2765 (shen.lazyderef (tl V2764) V2880) (if (cons? V2765) (let Y (hd V2765) (let V2766 (shen.lazyderef (tl V2765) V2880) (if (= () V2766) (let V2767 (shen.lazyderef V2878 V2880) (if (cons? V2767) (let A (hd V2767) (let V2768 (shen.lazyderef (tl V2767) V2880) (if (cons? V2768) (let V2769 (shen.lazyderef (hd V2768) V2880) (if (= --> V2769) (let V2770 (shen.lazyderef (tl V2768) V2880) (if (cons? V2770) (let B (hd V2770) (let V2771 (shen.lazyderef (tl V2770) V2880) (if (= () V2771) (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (if (shen.pvar? V2771) (do (shen.bindv V2771 () V2880) (let Result (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (do (shen.unbindv V2771 V2880) Result))) false)))) (if (shen.pvar? V2770) (let B (shen.newpv V2880) (do (shen.bindv V2770 (cons B ()) V2880) (let Result (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (do (shen.unbindv V2770 V2880) Result)))) false))) (if (shen.pvar? V2769) (do (shen.bindv V2769 --> V2880) (let Result (let V2772 (shen.lazyderef (tl V2768) V2880) (if (cons? V2772) (let B (hd V2772) (let V2773 (shen.lazyderef (tl V2772) V2880) (if (= () V2773) (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (if (shen.pvar? V2773) (do (shen.bindv V2773 () V2880) (let Result (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (do (shen.unbindv V2773 V2880) Result))) false)))) (if (shen.pvar? V2772) (let B (shen.newpv V2880) (do (shen.bindv V2772 (cons B ()) V2880) (let Result (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (do (shen.unbindv V2772 V2880) Result)))) false))) (do (shen.unbindv V2769 V2880) Result))) false))) (if (shen.pvar? V2768) (let B (shen.newpv V2880) (do (shen.bindv V2768 (cons --> (cons B ())) V2880) (let Result (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (do (shen.unbindv V2768 V2880) Result)))) false)))) (if (shen.pvar? V2767) (let A (shen.newpv V2880) (let B (shen.newpv V2880) (do (shen.bindv V2767 (cons A (cons --> (cons B ()))) V2880) (let Result (let Z (shen.newpv V2880) (let X&& (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Y V2880)) V2880 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2879) V2880 V2881)))))))))) (do (shen.unbindv V2767 V2880) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2774 (shen.lazyderef V2877 V2880) (if (cons? V2774) (let V2775 (shen.lazyderef (hd V2774) V2880) (if (= let V2775) (let V2776 (shen.lazyderef (tl V2774) V2880) (if (cons? V2776) (let X (hd V2776) (let V2777 (shen.lazyderef (tl V2776) V2880) (if (cons? V2777) (let Y (hd V2777) (let V2778 (shen.lazyderef (tl V2777) V2880) (if (cons? V2778) (let Z (hd V2778) (let V2779 (shen.lazyderef (tl V2778) V2880) (if (= () V2779) (let W (shen.newpv V2880) (let X&& (shen.newpv V2880) (let B (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (shen.th* Y B V2879 V2880 (freeze (bind X&& (shen.placeholder) V2880 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2880) (shen.lazyderef X V2880) (shen.lazyderef Z V2880)) V2880 (freeze (shen.th* W V2878 (cons (cons X&& (cons : (cons B ()))) V2879) V2880 V2881))))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2780 (shen.lazyderef V2877 V2880) (if (cons? V2780) (let V2781 (shen.lazyderef (hd V2780) V2880) (if (= open V2781) (let V2782 (shen.lazyderef (tl V2780) V2880) (if (cons? V2782) (let V2783 (shen.lazyderef (hd V2782) V2880) (if (= file V2783) (let V2784 (shen.lazyderef (tl V2782) V2880) (if (cons? V2784) (let FileName (hd V2784) (let V2785 (shen.lazyderef (tl V2784) V2880) (if (cons? V2785) (let Direction2713 (hd V2785) (let V2786 (shen.lazyderef (tl V2785) V2880) (if (= () V2786) (let V2787 (shen.lazyderef V2878 V2880) (if (cons? V2787) (let V2788 (shen.lazyderef (hd V2787) V2880) (if (= stream V2788) (let V2789 (shen.lazyderef (tl V2787) V2880) (if (cons? V2789) (let Direction (hd V2789) (let V2790 (shen.lazyderef (tl V2789) V2880) (if (= () V2790) (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (if (shen.pvar? V2790) (do (shen.bindv V2790 () V2880) (let Result (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (do (shen.unbindv V2790 V2880) Result))) false)))) (if (shen.pvar? V2789) (let Direction (shen.newpv V2880) (do (shen.bindv V2789 (cons Direction ()) V2880) (let Result (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (do (shen.unbindv V2789 V2880) Result)))) false))) (if (shen.pvar? V2788) (do (shen.bindv V2788 stream V2880) (let Result (let V2791 (shen.lazyderef (tl V2787) V2880) (if (cons? V2791) (let Direction (hd V2791) (let V2792 (shen.lazyderef (tl V2791) V2880) (if (= () V2792) (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (if (shen.pvar? V2792) (do (shen.bindv V2792 () V2880) (let Result (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (do (shen.unbindv V2792 V2880) Result))) false)))) (if (shen.pvar? V2791) (let Direction (shen.newpv V2880) (do (shen.bindv V2791 (cons Direction ()) V2880) (let Result (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (do (shen.unbindv V2791 V2880) Result)))) false))) (do (shen.unbindv V2788 V2880) Result))) false))) (if (shen.pvar? V2787) (let Direction (shen.newpv V2880) (do (shen.bindv V2787 (cons stream (cons Direction ())) V2880) (let Result (do (shen.incinfs) (unify! Direction Direction2713 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* FileName string V2879 V2880 V2881)))))) (do (shen.unbindv V2787 V2880) Result)))) false))) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2793 (shen.lazyderef V2877 V2880) (if (cons? V2793) (let V2794 (shen.lazyderef (hd V2793) V2880) (if (= type V2794) (let V2795 (shen.lazyderef (tl V2793) V2880) (if (cons? V2795) (let X (hd V2795) (let V2796 (shen.lazyderef (tl V2795) V2880) (if (cons? V2796) (let A (hd V2796) (let V2797 (shen.lazyderef (tl V2796) V2880) (if (= () V2797) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (unify A V2878 V2880 (freeze (shen.th* X A V2879 V2880 V2881)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2798 (shen.lazyderef V2877 V2880) (if (cons? V2798) (let V2799 (shen.lazyderef (hd V2798) V2880) (if (= input+ V2799) (let V2800 (shen.lazyderef (tl V2798) V2880) (if (cons? V2800) (let V2801 (shen.lazyderef (hd V2800) V2880) (if (= : V2801) (let V2802 (shen.lazyderef (tl V2800) V2880) (if (cons? V2802) (let A (hd V2802) (let V2803 (shen.lazyderef (tl V2802) V2880) (if (= () V2803) (let C (shen.newpv V2880) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2880)) V2880 (freeze (unify V2878 C V2880 V2881))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2804 (shen.lazyderef V2877 V2880) (if (cons? V2804) (let V2805 (shen.lazyderef (hd V2804) V2880) (if (= read+ V2805) (let V2806 (shen.lazyderef (tl V2804) V2880) (if (cons? V2806) (let V2807 (shen.lazyderef (hd V2806) V2880) (if (= : V2807) (let V2808 (shen.lazyderef (tl V2806) V2880) (if (cons? V2808) (let A (hd V2808) (let V2809 (shen.lazyderef (tl V2808) V2880) (if (= () V2809) (let C (shen.newpv V2880) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2880)) V2880 (freeze (unify V2878 C V2880 V2881))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2810 (shen.lazyderef V2877 V2880) (if (cons? V2810) (let V2811 (shen.lazyderef (hd V2810) V2880) (if (= set V2811) (let V2812 (shen.lazyderef (tl V2810) V2880) (if (cons? V2812) (let Var (hd V2812) (let V2813 (shen.lazyderef (tl V2812) V2880) (if (cons? V2813) (let Val (hd V2813) (let V2814 (shen.lazyderef (tl V2813) V2880) (if (= () V2814) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (shen.th* Var symbol V2879 V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* (cons value (cons Var ())) V2878 V2879 V2880 (freeze (shen.th* Val V2878 V2879 V2880 V2881)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2815 (shen.lazyderef V2877 V2880) (if (cons? V2815) (let V2816 (shen.lazyderef (hd V2815) V2880) (if (= shen.<-sem V2816) (let V2817 (shen.lazyderef (tl V2815) V2880) (if (cons? V2817) (let F (hd V2817) (let V2818 (shen.lazyderef (tl V2817) V2880) (if (= () V2818) (let A (shen.newpv V2880) (let F&& (shen.newpv V2880) (let B (shen.newpv V2880) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2879 V2880 (freeze (cut Throwcontrol V2880 (freeze (bind F&& (concat && (shen.lazyderef F V2880)) V2880 (freeze (cut Throwcontrol V2880 (freeze (shen.th* F&& V2878 (cons (cons F&& (cons : (cons B ()))) V2879) V2880 V2881))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2819 (shen.lazyderef V2877 V2880) (if (cons? V2819) (let V2820 (shen.lazyderef (hd V2819) V2880) (if (= fail V2820) (let V2821 (shen.lazyderef (tl V2819) V2880) (if (= () V2821) (let V2822 (shen.lazyderef V2878 V2880) (if (= symbol V2822) (do (shen.incinfs) (thaw V2881)) (if (shen.pvar? V2822) (do (shen.bindv V2822 symbol V2880) (let Result (do (shen.incinfs) (thaw V2881)) (do (shen.unbindv V2822 V2880) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2880) (do (shen.incinfs) (shen.t*-hyps V2879 NewHyp V2880 (freeze (shen.th* V2877 V2878 NewHyp V2880 V2881))))) (if (= Case false) (let Case (let V2823 (shen.lazyderef V2877 V2880) (if (cons? V2823) (let V2824 (shen.lazyderef (hd V2823) V2880) (if (= define V2824) (let V2825 (shen.lazyderef (tl V2823) V2880) (if (cons? V2825) (let F (hd V2825) (let X (tl V2825) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (shen.t*-def (cons define (cons F X)) V2878 V2879 V2880 V2881)))))) false)) false)) false)) (if (= Case false) (let Case (let V2826 (shen.lazyderef V2877 V2880) (if (cons? V2826) (let V2827 (shen.lazyderef (hd V2826) V2880) (if (= defcc V2827) (let V2828 (shen.lazyderef (tl V2826) V2880) (if (cons? V2828) (let F (hd V2828) (let X (tl V2828) (do (shen.incinfs) (cut Throwcontrol V2880 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2878 V2879 V2880 V2881)))))) false)) false)) false)) (if (= Case false) (let Case (let V2829 (shen.lazyderef V2877 V2880) (if (cons? V2829) (let V2830 (shen.lazyderef (hd V2829) V2880) (if (= shen.process-datatype V2830) (let V2831 (shen.lazyderef V2878 V2880) (if (= symbol V2831) (do (shen.incinfs) (thaw V2881)) (if (shen.pvar? V2831) (do (shen.bindv V2831 symbol V2880) (let Result (do (shen.incinfs) (thaw V2881)) (do (shen.unbindv V2831 V2880) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2832 (shen.lazyderef V2877 V2880) (if (cons? V2832) (let V2833 (shen.lazyderef (hd V2832) V2880) (if (= shen.synonyms-help V2833) (let V2834 (shen.lazyderef V2878 V2880) (if (= symbol V2834) (do (shen.incinfs) (thaw V2881)) (if (shen.pvar? V2834) (do (shen.bindv V2834 symbol V2880) (let Result (do (shen.incinfs) (thaw V2881)) (do (shen.unbindv V2834 V2880) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2880) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2880 (freeze (shen.udefs* (cons V2877 (cons : (cons V2878 ()))) V2879 Datatypes V2880 V2881))))) 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 (V2819 V2820 V2821 V2822) (let Case (let V2566 (shen.lazyderef V2819 V2821) (if (cons? V2566) (let V2567 (shen.lazyderef (hd V2566) V2821) (if (cons? V2567) (let V2568 (shen.lazyderef (hd V2567) V2821) (if (cons? V2568) (let V2569 (shen.lazyderef (hd V2568) V2821) (if (= cons V2569) (let V2570 (shen.lazyderef (tl V2568) V2821) (if (cons? V2570) (let X (hd V2570) (let V2571 (shen.lazyderef (tl V2570) V2821) (if (cons? V2571) (let Y (hd V2571) (let V2572 (shen.lazyderef (tl V2571) V2821) (if (= () V2572) (let V2573 (shen.lazyderef (tl V2567) V2821) (if (cons? V2573) (let V2574 (shen.lazyderef (hd V2573) V2821) (if (= : V2574) (let V2575 (shen.lazyderef (tl V2573) V2821) (if (cons? V2575) (let V2576 (shen.lazyderef (hd V2575) V2821) (if (cons? V2576) (let V2577 (shen.lazyderef (hd V2576) V2821) (if (= list V2577) (let V2578 (shen.lazyderef (tl V2576) V2821) (if (cons? V2578) (let A (hd V2578) (let V2579 (shen.lazyderef (tl V2578) V2821) (if (= () V2579) (let V2580 (shen.lazyderef (tl V2575) V2821) (if (= () V2580) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2580) (do (shen.bindv V2580 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2580 V2821) Result))) false))) (if (shen.pvar? V2579) (do (shen.bindv V2579 () V2821) (let Result (let V2581 (shen.lazyderef (tl V2575) V2821) (if (= () V2581) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2581) (do (shen.bindv V2581 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2581 V2821) Result))) false))) (do (shen.unbindv V2579 V2821) Result))) false)))) (if (shen.pvar? V2578) (let A (shen.newpv V2821) (do (shen.bindv V2578 (cons A ()) V2821) (let Result (let V2582 (shen.lazyderef (tl V2575) V2821) (if (= () V2582) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2582) (do (shen.bindv V2582 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2582 V2821) Result))) false))) (do (shen.unbindv V2578 V2821) Result)))) false))) (if (shen.pvar? V2577) (do (shen.bindv V2577 list V2821) (let Result (let V2583 (shen.lazyderef (tl V2576) V2821) (if (cons? V2583) (let A (hd V2583) (let V2584 (shen.lazyderef (tl V2583) V2821) (if (= () V2584) (let V2585 (shen.lazyderef (tl V2575) V2821) (if (= () V2585) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2585) (do (shen.bindv V2585 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2585 V2821) Result))) false))) (if (shen.pvar? V2584) (do (shen.bindv V2584 () V2821) (let Result (let V2586 (shen.lazyderef (tl V2575) V2821) (if (= () V2586) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2586) (do (shen.bindv V2586 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2586 V2821) Result))) false))) (do (shen.unbindv V2584 V2821) Result))) false)))) (if (shen.pvar? V2583) (let A (shen.newpv V2821) (do (shen.bindv V2583 (cons A ()) V2821) (let Result (let V2587 (shen.lazyderef (tl V2575) V2821) (if (= () V2587) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2587) (do (shen.bindv V2587 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2587 V2821) Result))) false))) (do (shen.unbindv V2583 V2821) Result)))) false))) (do (shen.unbindv V2577 V2821) Result))) false))) (if (shen.pvar? V2576) (let A (shen.newpv V2821) (do (shen.bindv V2576 (cons list (cons A ())) V2821) (let Result (let V2588 (shen.lazyderef (tl V2575) V2821) (if (= () V2588) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2588) (do (shen.bindv V2588 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2588 V2821) Result))) false))) (do (shen.unbindv V2576 V2821) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2589 (shen.lazyderef V2819 V2821) (if (cons? V2589) (let V2590 (shen.lazyderef (hd V2589) V2821) (if (cons? V2590) (let V2591 (shen.lazyderef (hd V2590) V2821) (if (cons? V2591) (let V2592 (shen.lazyderef (hd V2591) V2821) (if (= @p V2592) (let V2593 (shen.lazyderef (tl V2591) V2821) (if (cons? V2593) (let X (hd V2593) (let V2594 (shen.lazyderef (tl V2593) V2821) (if (cons? V2594) (let Y (hd V2594) (let V2595 (shen.lazyderef (tl V2594) V2821) (if (= () V2595) (let V2596 (shen.lazyderef (tl V2590) V2821) (if (cons? V2596) (let V2597 (shen.lazyderef (hd V2596) V2821) (if (= : V2597) (let V2598 (shen.lazyderef (tl V2596) V2821) (if (cons? V2598) (let V2599 (shen.lazyderef (hd V2598) V2821) (if (cons? V2599) (let A (hd V2599) (let V2600 (shen.lazyderef (tl V2599) V2821) (if (cons? V2600) (let V2601 (shen.lazyderef (hd V2600) V2821) (if (= * V2601) (let V2602 (shen.lazyderef (tl V2600) V2821) (if (cons? V2602) (let B (hd V2602) (let V2603 (shen.lazyderef (tl V2602) V2821) (if (= () V2603) (let V2604 (shen.lazyderef (tl V2598) V2821) (if (= () V2604) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2604) (do (shen.bindv V2604 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2604 V2821) Result))) false))) (if (shen.pvar? V2603) (do (shen.bindv V2603 () V2821) (let Result (let V2605 (shen.lazyderef (tl V2598) V2821) (if (= () V2605) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2605) (do (shen.bindv V2605 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2605 V2821) Result))) false))) (do (shen.unbindv V2603 V2821) Result))) false)))) (if (shen.pvar? V2602) (let B (shen.newpv V2821) (do (shen.bindv V2602 (cons B ()) V2821) (let Result (let V2606 (shen.lazyderef (tl V2598) V2821) (if (= () V2606) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2606) (do (shen.bindv V2606 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2606 V2821) Result))) false))) (do (shen.unbindv V2602 V2821) Result)))) false))) (if (shen.pvar? V2601) (do (shen.bindv V2601 * V2821) (let Result (let V2607 (shen.lazyderef (tl V2600) V2821) (if (cons? V2607) (let B (hd V2607) (let V2608 (shen.lazyderef (tl V2607) V2821) (if (= () V2608) (let V2609 (shen.lazyderef (tl V2598) V2821) (if (= () V2609) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2609) (do (shen.bindv V2609 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2609 V2821) Result))) false))) (if (shen.pvar? V2608) (do (shen.bindv V2608 () V2821) (let Result (let V2610 (shen.lazyderef (tl V2598) V2821) (if (= () V2610) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2610) (do (shen.bindv V2610 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2610 V2821) Result))) false))) (do (shen.unbindv V2608 V2821) Result))) false)))) (if (shen.pvar? V2607) (let B (shen.newpv V2821) (do (shen.bindv V2607 (cons B ()) V2821) (let Result (let V2611 (shen.lazyderef (tl V2598) V2821) (if (= () V2611) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2611) (do (shen.bindv V2611 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2611 V2821) Result))) false))) (do (shen.unbindv V2607 V2821) Result)))) false))) (do (shen.unbindv V2601 V2821) Result))) false))) (if (shen.pvar? V2600) (let B (shen.newpv V2821) (do (shen.bindv V2600 (cons * (cons B ())) V2821) (let Result (let V2612 (shen.lazyderef (tl V2598) V2821) (if (= () V2612) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2612) (do (shen.bindv V2612 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2612 V2821) Result))) false))) (do (shen.unbindv V2600 V2821) Result)))) false)))) (if (shen.pvar? V2599) (let A (shen.newpv V2821) (let B (shen.newpv V2821) (do (shen.bindv V2599 (cons A (cons * (cons B ()))) V2821) (let Result (let V2613 (shen.lazyderef (tl V2598) V2821) (if (= () V2613) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2613) (do (shen.bindv V2613 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2613 V2821) Result))) false))) (do (shen.unbindv V2599 V2821) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2614 (shen.lazyderef V2819 V2821) (if (cons? V2614) (let V2615 (shen.lazyderef (hd V2614) V2821) (if (cons? V2615) (let V2616 (shen.lazyderef (hd V2615) V2821) (if (cons? V2616) (let V2617 (shen.lazyderef (hd V2616) V2821) (if (= @v V2617) (let V2618 (shen.lazyderef (tl V2616) V2821) (if (cons? V2618) (let X (hd V2618) (let V2619 (shen.lazyderef (tl V2618) V2821) (if (cons? V2619) (let Y (hd V2619) (let V2620 (shen.lazyderef (tl V2619) V2821) (if (= () V2620) (let V2621 (shen.lazyderef (tl V2615) V2821) (if (cons? V2621) (let V2622 (shen.lazyderef (hd V2621) V2821) (if (= : V2622) (let V2623 (shen.lazyderef (tl V2621) V2821) (if (cons? V2623) (let V2624 (shen.lazyderef (hd V2623) V2821) (if (cons? V2624) (let V2625 (shen.lazyderef (hd V2624) V2821) (if (= vector V2625) (let V2626 (shen.lazyderef (tl V2624) V2821) (if (cons? V2626) (let A (hd V2626) (let V2627 (shen.lazyderef (tl V2626) V2821) (if (= () V2627) (let V2628 (shen.lazyderef (tl V2623) V2821) (if (= () V2628) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2628) (do (shen.bindv V2628 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2628 V2821) Result))) false))) (if (shen.pvar? V2627) (do (shen.bindv V2627 () V2821) (let Result (let V2629 (shen.lazyderef (tl V2623) V2821) (if (= () V2629) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2629) (do (shen.bindv V2629 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2629 V2821) Result))) false))) (do (shen.unbindv V2627 V2821) Result))) false)))) (if (shen.pvar? V2626) (let A (shen.newpv V2821) (do (shen.bindv V2626 (cons A ()) V2821) (let Result (let V2630 (shen.lazyderef (tl V2623) V2821) (if (= () V2630) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2630) (do (shen.bindv V2630 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2630 V2821) Result))) false))) (do (shen.unbindv V2626 V2821) Result)))) false))) (if (shen.pvar? V2625) (do (shen.bindv V2625 vector V2821) (let Result (let V2631 (shen.lazyderef (tl V2624) V2821) (if (cons? V2631) (let A (hd V2631) (let V2632 (shen.lazyderef (tl V2631) V2821) (if (= () V2632) (let V2633 (shen.lazyderef (tl V2623) V2821) (if (= () V2633) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2633) (do (shen.bindv V2633 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2633 V2821) Result))) false))) (if (shen.pvar? V2632) (do (shen.bindv V2632 () V2821) (let Result (let V2634 (shen.lazyderef (tl V2623) V2821) (if (= () V2634) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2634) (do (shen.bindv V2634 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2634 V2821) Result))) false))) (do (shen.unbindv V2632 V2821) Result))) false)))) (if (shen.pvar? V2631) (let A (shen.newpv V2821) (do (shen.bindv V2631 (cons A ()) V2821) (let Result (let V2635 (shen.lazyderef (tl V2623) V2821) (if (= () V2635) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2635) (do (shen.bindv V2635 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2635 V2821) Result))) false))) (do (shen.unbindv V2631 V2821) Result)))) false))) (do (shen.unbindv V2625 V2821) Result))) false))) (if (shen.pvar? V2624) (let A (shen.newpv V2821) (do (shen.bindv V2624 (cons vector (cons A ())) V2821) (let Result (let V2636 (shen.lazyderef (tl V2623) V2821) (if (= () V2636) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2636) (do (shen.bindv V2636 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2636 V2821) Result))) false))) (do (shen.unbindv V2624 V2821) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2637 (shen.lazyderef V2819 V2821) (if (cons? V2637) (let V2638 (shen.lazyderef (hd V2637) V2821) (if (cons? V2638) (let V2639 (shen.lazyderef (hd V2638) V2821) (if (cons? V2639) (let V2640 (shen.lazyderef (hd V2639) V2821) (if (= @s V2640) (let V2641 (shen.lazyderef (tl V2639) V2821) (if (cons? V2641) (let X (hd V2641) (let V2642 (shen.lazyderef (tl V2641) V2821) (if (cons? V2642) (let Y (hd V2642) (let V2643 (shen.lazyderef (tl V2642) V2821) (if (= () V2643) (let V2644 (shen.lazyderef (tl V2638) V2821) (if (cons? V2644) (let V2645 (shen.lazyderef (hd V2644) V2821) (if (= : V2645) (let V2646 (shen.lazyderef (tl V2644) V2821) (if (cons? V2646) (let V2647 (shen.lazyderef (hd V2646) V2821) (if (= string V2647) (let V2648 (shen.lazyderef (tl V2646) V2821) (if (= () V2648) (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2648) (do (shen.bindv V2648 () V2821) (let Result (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2648 V2821) Result))) false))) (if (shen.pvar? V2647) (do (shen.bindv V2647 string V2821) (let Result (let V2649 (shen.lazyderef (tl V2646) V2821) (if (= () V2649) (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2649) (do (shen.bindv V2649 () V2821) (let Result (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2649 V2821) Result))) false))) (do (shen.unbindv V2647 V2821) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2650 (shen.lazyderef V2819 V2821) (if (cons? V2650) (let X (hd V2650) (let Hyp (tl V2650) (let NewHyps (shen.newpv V2821) (do (shen.incinfs) (bind V2820 (cons (shen.lazyderef X V2821) (shen.lazyderef NewHyps V2821)) V2821 (freeze (shen.t*-hyps Hyp NewHyps V2821 V2822))))))) false)) Case)) Case)) Case)) Case)))
75
+ (defun shen.t*-hyps (V2882 V2883 V2884 V2885) (let Case (let V2628 (shen.lazyderef V2882 V2884) (if (cons? V2628) (let V2629 (shen.lazyderef (hd V2628) V2884) (if (cons? V2629) (let V2630 (shen.lazyderef (hd V2629) V2884) (if (cons? V2630) (let V2631 (shen.lazyderef (hd V2630) V2884) (if (= cons V2631) (let V2632 (shen.lazyderef (tl V2630) V2884) (if (cons? V2632) (let X (hd V2632) (let V2633 (shen.lazyderef (tl V2632) V2884) (if (cons? V2633) (let Y (hd V2633) (let V2634 (shen.lazyderef (tl V2633) V2884) (if (= () V2634) (let V2635 (shen.lazyderef (tl V2629) V2884) (if (cons? V2635) (let V2636 (shen.lazyderef (hd V2635) V2884) (if (= : V2636) (let V2637 (shen.lazyderef (tl V2635) V2884) (if (cons? V2637) (let V2638 (shen.lazyderef (hd V2637) V2884) (if (cons? V2638) (let V2639 (shen.lazyderef (hd V2638) V2884) (if (= list V2639) (let V2640 (shen.lazyderef (tl V2638) V2884) (if (cons? V2640) (let A (hd V2640) (let V2641 (shen.lazyderef (tl V2640) V2884) (if (= () V2641) (let V2642 (shen.lazyderef (tl V2637) V2884) (if (= () V2642) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2642) (do (shen.bindv V2642 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2642 V2884) Result))) false))) (if (shen.pvar? V2641) (do (shen.bindv V2641 () V2884) (let Result (let V2643 (shen.lazyderef (tl V2637) V2884) (if (= () V2643) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2643) (do (shen.bindv V2643 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2643 V2884) Result))) false))) (do (shen.unbindv V2641 V2884) Result))) false)))) (if (shen.pvar? V2640) (let A (shen.newpv V2884) (do (shen.bindv V2640 (cons A ()) V2884) (let Result (let V2644 (shen.lazyderef (tl V2637) V2884) (if (= () V2644) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2644) (do (shen.bindv V2644 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2644 V2884) Result))) false))) (do (shen.unbindv V2640 V2884) Result)))) false))) (if (shen.pvar? V2639) (do (shen.bindv V2639 list V2884) (let Result (let V2645 (shen.lazyderef (tl V2638) V2884) (if (cons? V2645) (let A (hd V2645) (let V2646 (shen.lazyderef (tl V2645) V2884) (if (= () V2646) (let V2647 (shen.lazyderef (tl V2637) V2884) (if (= () V2647) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2647) (do (shen.bindv V2647 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2647 V2884) Result))) false))) (if (shen.pvar? V2646) (do (shen.bindv V2646 () V2884) (let Result (let V2648 (shen.lazyderef (tl V2637) V2884) (if (= () V2648) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2648) (do (shen.bindv V2648 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2648 V2884) Result))) false))) (do (shen.unbindv V2646 V2884) Result))) false)))) (if (shen.pvar? V2645) (let A (shen.newpv V2884) (do (shen.bindv V2645 (cons A ()) V2884) (let Result (let V2649 (shen.lazyderef (tl V2637) V2884) (if (= () V2649) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2649) (do (shen.bindv V2649 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2649 V2884) Result))) false))) (do (shen.unbindv V2645 V2884) Result)))) false))) (do (shen.unbindv V2639 V2884) Result))) false))) (if (shen.pvar? V2638) (let A (shen.newpv V2884) (do (shen.bindv V2638 (cons list (cons A ())) V2884) (let Result (let V2650 (shen.lazyderef (tl V2637) V2884) (if (= () V2650) (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2650) (do (shen.bindv V2650 () V2884) (let Result (let Hyp (tl V2628) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons list (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2650 V2884) Result))) false))) (do (shen.unbindv V2638 V2884) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2651 (shen.lazyderef V2882 V2884) (if (cons? V2651) (let V2652 (shen.lazyderef (hd V2651) V2884) (if (cons? V2652) (let V2653 (shen.lazyderef (hd V2652) V2884) (if (cons? V2653) (let V2654 (shen.lazyderef (hd V2653) V2884) (if (= @p V2654) (let V2655 (shen.lazyderef (tl V2653) V2884) (if (cons? V2655) (let X (hd V2655) (let V2656 (shen.lazyderef (tl V2655) V2884) (if (cons? V2656) (let Y (hd V2656) (let V2657 (shen.lazyderef (tl V2656) V2884) (if (= () V2657) (let V2658 (shen.lazyderef (tl V2652) V2884) (if (cons? V2658) (let V2659 (shen.lazyderef (hd V2658) V2884) (if (= : V2659) (let V2660 (shen.lazyderef (tl V2658) V2884) (if (cons? V2660) (let V2661 (shen.lazyderef (hd V2660) V2884) (if (cons? V2661) (let A (hd V2661) (let V2662 (shen.lazyderef (tl V2661) V2884) (if (cons? V2662) (let V2663 (shen.lazyderef (hd V2662) V2884) (if (= * V2663) (let V2664 (shen.lazyderef (tl V2662) V2884) (if (cons? V2664) (let B (hd V2664) (let V2665 (shen.lazyderef (tl V2664) V2884) (if (= () V2665) (let V2666 (shen.lazyderef (tl V2660) V2884) (if (= () V2666) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2666) (do (shen.bindv V2666 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2666 V2884) Result))) false))) (if (shen.pvar? V2665) (do (shen.bindv V2665 () V2884) (let Result (let V2667 (shen.lazyderef (tl V2660) V2884) (if (= () V2667) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2667) (do (shen.bindv V2667 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2667 V2884) Result))) false))) (do (shen.unbindv V2665 V2884) Result))) false)))) (if (shen.pvar? V2664) (let B (shen.newpv V2884) (do (shen.bindv V2664 (cons B ()) V2884) (let Result (let V2668 (shen.lazyderef (tl V2660) V2884) (if (= () V2668) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2668) (do (shen.bindv V2668 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2668 V2884) Result))) false))) (do (shen.unbindv V2664 V2884) Result)))) false))) (if (shen.pvar? V2663) (do (shen.bindv V2663 * V2884) (let Result (let V2669 (shen.lazyderef (tl V2662) V2884) (if (cons? V2669) (let B (hd V2669) (let V2670 (shen.lazyderef (tl V2669) V2884) (if (= () V2670) (let V2671 (shen.lazyderef (tl V2660) V2884) (if (= () V2671) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2671) (do (shen.bindv V2671 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2671 V2884) Result))) false))) (if (shen.pvar? V2670) (do (shen.bindv V2670 () V2884) (let Result (let V2672 (shen.lazyderef (tl V2660) V2884) (if (= () V2672) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2672) (do (shen.bindv V2672 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2672 V2884) Result))) false))) (do (shen.unbindv V2670 V2884) Result))) false)))) (if (shen.pvar? V2669) (let B (shen.newpv V2884) (do (shen.bindv V2669 (cons B ()) V2884) (let Result (let V2673 (shen.lazyderef (tl V2660) V2884) (if (= () V2673) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2673) (do (shen.bindv V2673 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2673 V2884) Result))) false))) (do (shen.unbindv V2669 V2884) Result)))) false))) (do (shen.unbindv V2663 V2884) Result))) false))) (if (shen.pvar? V2662) (let B (shen.newpv V2884) (do (shen.bindv V2662 (cons * (cons B ())) V2884) (let Result (let V2674 (shen.lazyderef (tl V2660) V2884) (if (= () V2674) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2674) (do (shen.bindv V2674 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2674 V2884) Result))) false))) (do (shen.unbindv V2662 V2884) Result)))) false)))) (if (shen.pvar? V2661) (let A (shen.newpv V2884) (let B (shen.newpv V2884) (do (shen.bindv V2661 (cons A (cons * (cons B ()))) V2884) (let Result (let V2675 (shen.lazyderef (tl V2660) V2884) (if (= () V2675) (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2675) (do (shen.bindv V2675 () V2884) (let Result (let Hyp (tl V2651) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (shen.lazyderef B V2884) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2675 V2884) Result))) false))) (do (shen.unbindv V2661 V2884) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2676 (shen.lazyderef V2882 V2884) (if (cons? V2676) (let V2677 (shen.lazyderef (hd V2676) V2884) (if (cons? V2677) (let V2678 (shen.lazyderef (hd V2677) V2884) (if (cons? V2678) (let V2679 (shen.lazyderef (hd V2678) V2884) (if (= @v V2679) (let V2680 (shen.lazyderef (tl V2678) V2884) (if (cons? V2680) (let X (hd V2680) (let V2681 (shen.lazyderef (tl V2680) V2884) (if (cons? V2681) (let Y (hd V2681) (let V2682 (shen.lazyderef (tl V2681) V2884) (if (= () V2682) (let V2683 (shen.lazyderef (tl V2677) V2884) (if (cons? V2683) (let V2684 (shen.lazyderef (hd V2683) V2884) (if (= : V2684) (let V2685 (shen.lazyderef (tl V2683) V2884) (if (cons? V2685) (let V2686 (shen.lazyderef (hd V2685) V2884) (if (cons? V2686) (let V2687 (shen.lazyderef (hd V2686) V2884) (if (= vector V2687) (let V2688 (shen.lazyderef (tl V2686) V2884) (if (cons? V2688) (let A (hd V2688) (let V2689 (shen.lazyderef (tl V2688) V2884) (if (= () V2689) (let V2690 (shen.lazyderef (tl V2685) V2884) (if (= () V2690) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2690) (do (shen.bindv V2690 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2690 V2884) Result))) false))) (if (shen.pvar? V2689) (do (shen.bindv V2689 () V2884) (let Result (let V2691 (shen.lazyderef (tl V2685) V2884) (if (= () V2691) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2691) (do (shen.bindv V2691 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2691 V2884) Result))) false))) (do (shen.unbindv V2689 V2884) Result))) false)))) (if (shen.pvar? V2688) (let A (shen.newpv V2884) (do (shen.bindv V2688 (cons A ()) V2884) (let Result (let V2692 (shen.lazyderef (tl V2685) V2884) (if (= () V2692) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2692) (do (shen.bindv V2692 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2692 V2884) Result))) false))) (do (shen.unbindv V2688 V2884) Result)))) false))) (if (shen.pvar? V2687) (do (shen.bindv V2687 vector V2884) (let Result (let V2693 (shen.lazyderef (tl V2686) V2884) (if (cons? V2693) (let A (hd V2693) (let V2694 (shen.lazyderef (tl V2693) V2884) (if (= () V2694) (let V2695 (shen.lazyderef (tl V2685) V2884) (if (= () V2695) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2695) (do (shen.bindv V2695 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2695 V2884) Result))) false))) (if (shen.pvar? V2694) (do (shen.bindv V2694 () V2884) (let Result (let V2696 (shen.lazyderef (tl V2685) V2884) (if (= () V2696) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2696) (do (shen.bindv V2696 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2696 V2884) Result))) false))) (do (shen.unbindv V2694 V2884) Result))) false)))) (if (shen.pvar? V2693) (let A (shen.newpv V2884) (do (shen.bindv V2693 (cons A ()) V2884) (let Result (let V2697 (shen.lazyderef (tl V2685) V2884) (if (= () V2697) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2697) (do (shen.bindv V2697 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2697 V2884) Result))) false))) (do (shen.unbindv V2693 V2884) Result)))) false))) (do (shen.unbindv V2687 V2884) Result))) false))) (if (shen.pvar? V2686) (let A (shen.newpv V2884) (do (shen.bindv V2686 (cons vector (cons A ())) V2884) (let Result (let V2698 (shen.lazyderef (tl V2685) V2884) (if (= () V2698) (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2698) (do (shen.bindv V2698 () V2884) (let Result (let Hyp (tl V2676) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons (shen.lazyderef A V2884) ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons (cons vector (cons (shen.lazyderef A V2884) ())) ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2698 V2884) Result))) false))) (do (shen.unbindv V2686 V2884) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2699 (shen.lazyderef V2882 V2884) (if (cons? V2699) (let V2700 (shen.lazyderef (hd V2699) V2884) (if (cons? V2700) (let V2701 (shen.lazyderef (hd V2700) V2884) (if (cons? V2701) (let V2702 (shen.lazyderef (hd V2701) V2884) (if (= @s V2702) (let V2703 (shen.lazyderef (tl V2701) V2884) (if (cons? V2703) (let X (hd V2703) (let V2704 (shen.lazyderef (tl V2703) V2884) (if (cons? V2704) (let Y (hd V2704) (let V2705 (shen.lazyderef (tl V2704) V2884) (if (= () V2705) (let V2706 (shen.lazyderef (tl V2700) V2884) (if (cons? V2706) (let V2707 (shen.lazyderef (hd V2706) V2884) (if (= : V2707) (let V2708 (shen.lazyderef (tl V2706) V2884) (if (cons? V2708) (let V2709 (shen.lazyderef (hd V2708) V2884) (if (= string V2709) (let V2710 (shen.lazyderef (tl V2708) V2884) (if (= () V2710) (let Hyp (tl V2699) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons string ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2710) (do (shen.bindv V2710 () V2884) (let Result (let Hyp (tl V2699) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons string ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2710 V2884) Result))) false))) (if (shen.pvar? V2709) (do (shen.bindv V2709 string V2884) (let Result (let V2711 (shen.lazyderef (tl V2708) V2884) (if (= () V2711) (let Hyp (tl V2699) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons string ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (if (shen.pvar? V2711) (do (shen.bindv V2711 () V2884) (let Result (let Hyp (tl V2699) (do (shen.incinfs) (bind V2883 (cons (cons (shen.lazyderef X V2884) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2884) (cons : (cons string ()))) (shen.lazyderef Hyp V2884))) V2884 V2885))) (do (shen.unbindv V2711 V2884) Result))) false))) (do (shen.unbindv V2709 V2884) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2712 (shen.lazyderef V2882 V2884) (if (cons? V2712) (let X (hd V2712) (let Hyp (tl V2712) (let NewHyps (shen.newpv V2884) (do (shen.incinfs) (bind V2883 (cons (shen.lazyderef X V2884) (shen.lazyderef NewHyps V2884)) V2884 (freeze (shen.t*-hyps Hyp NewHyps V2884 V2885))))))) false)) Case)) Case)) Case)) Case)))
76
76
 
77
- (defun shen.show (V2835 V2836 V2837 V2838) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2835 V2837)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2836 V2837) 1) (do (pr "
78
- > " (stoutput)) (do (shen.pause-for-user (value *language*)) (thaw V2838))))))))) (true (thaw V2838))))
77
+ (defun shen.show (V2898 V2899 V2900 V2901) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2898 V2900)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2899 V2900) 1) (do (shen.prhush "
78
+ > " (stoutput)) (do (shen.pause-for-user (value *language*)) (thaw V2901))))))))) (true (thaw V2901))))
79
79
 
80
- (defun shen.line () (let Infs (inferences) (pr (cn "____________________________________________________________ " (shen.app Infs (cn " inference" (shen.app (if (= 1 Infs) "" "s") "
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 (V2839) (cond ((and (cons? V2839) (and (cons? (tl V2839)) (and (= : (hd (tl V2839))) (and (cons? (tl (tl V2839))) (= () (tl (tl (tl V2839)))))))) (pr (shen.app (hd V2839) (cn " : " (shen.app (hd (tl (tl V2839))) "" shen.r)) shen.r) (stoutput))) (true (pr (shen.app V2839 "" shen.r) (stoutput)))))
83
+ (defun shen.show-p (V2902) (cond ((and (cons? V2902) (and (cons? (tl V2902)) (and (= : (hd (tl V2902))) (and (cons? (tl (tl V2902))) (= () (tl (tl (tl V2902)))))))) (shen.prhush (shen.app (hd V2902) (cn " : " (shen.app (hd (tl (tl V2902))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V2902 "" shen.r) (stoutput)))))
84
84
 
85
- (defun shen.show-assumptions (V2842 V2843) (cond ((= () V2842) shen.skip) ((cons? V2842) (do (pr (shen.app V2843 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2842)) (do (nl 1) (shen.show-assumptions (tl V2842) (+ V2843 1)))))) (true (shen.sys-error shen.show-assumptions))))
85
+ (defun shen.show-assumptions (V2905 V2906) (cond ((= () V2905) shen.skip) ((cons? V2905) (do (shen.prhush (shen.app V2906 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2905)) (do (nl 1) (shen.show-assumptions (tl V2905) (+ V2906 1)))))) (true (shen.sys-error shen.show-assumptions))))
86
86
 
87
- (defun shen.pause-for-user (V2848) (cond ((= "Common Lisp" V2848) (let I (FORMAT () "~C" (READ-CHAR)) (if (= I "a") (simple-error "input aborted
87
+ (defun shen.pause-for-user (V2911) (cond ((= "Common Lisp" V2911) (let I (FORMAT () "~C" (READ-CHAR)) (if (= I "a") (simple-error "input aborted
88
88
  ") (nl 1)))) (true (let I (shen.read-char) (if (= I "a") (simple-error "input aborted
89
89
  ") (nl 1))))))
90
90
 
91
91
  (defun shen.read-char () (shen.read-char-h (read-byte (stinput)) 0))
92
92
 
93
- (defun shen.read-char-h (V2851 V2852) (cond ((and (= -1 V2851) (= 0 V2852)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 0 V2852) (shen.read-char-h (read-byte (stinput)) 0)) ((and (= -1 V2851) (= 1 V2852)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 1 V2852) (n->string V2851)) (true (shen.sys-error shen.read-char-h))))
93
+ (defun shen.read-char-h (V2914 V2915) (cond ((and (= -1 V2914) (= 0 V2915)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 0 V2915) (shen.read-char-h (read-byte (stinput)) 0)) ((and (= -1 V2914) (= 1 V2915)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 1 V2915) (n->string V2914)) (true (shen.sys-error shen.read-char-h))))
94
94
 
95
- (defun shen.typedf? (V2853) (element? V2853 (value shen.*signedfuncs*)))
95
+ (defun shen.typedf? (V2916) (cons? (assoc V2916 (value shen.*signedfuncs*))))
96
96
 
97
- (defun shen.sigf (V2854) (concat shen.type-signature-of- V2854))
97
+ (defun shen.sigf (V2917) (concat shen.type-signature-of- V2917))
98
98
 
99
99
  (defun shen.placeholder () (gensym &&))
100
100
 
101
- (defun shen.base (V2855 V2856 V2857 V2858) (let Case (let V2553 (shen.lazyderef V2856 V2857) (if (= number V2553) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2855 V2857)) V2857 V2858)) (if (shen.pvar? V2553) (do (shen.bindv V2553 number V2857) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2855 V2857)) V2857 V2858)) (do (shen.unbindv V2553 V2857) Result))) false))) (if (= Case false) (let Case (let V2554 (shen.lazyderef V2856 V2857) (if (= boolean V2554) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2855 V2857)) V2857 V2858)) (if (shen.pvar? V2554) (do (shen.bindv V2554 boolean V2857) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2855 V2857)) V2857 V2858)) (do (shen.unbindv V2554 V2857) Result))) false))) (if (= Case false) (let Case (let V2555 (shen.lazyderef V2856 V2857) (if (= string V2555) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2855 V2857)) V2857 V2858)) (if (shen.pvar? V2555) (do (shen.bindv V2555 string V2857) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2855 V2857)) V2857 V2858)) (do (shen.unbindv V2555 V2857) Result))) false))) (if (= Case false) (let Case (let V2556 (shen.lazyderef V2856 V2857) (if (= symbol V2556) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2855 V2857)) V2857 (freeze (fwhen (not (shen.placeholder? (shen.lazyderef V2855 V2857))) V2857 V2858)))) (if (shen.pvar? V2556) (do (shen.bindv V2556 symbol V2857) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2855 V2857)) V2857 (freeze (fwhen (not (shen.placeholder? (shen.lazyderef V2855 V2857))) V2857 V2858)))) (do (shen.unbindv V2556 V2857) Result))) false))) (if (= Case false) (let V2557 (shen.lazyderef V2855 V2857) (if (= () V2557) (let V2558 (shen.lazyderef V2856 V2857) (if (cons? V2558) (let V2559 (shen.lazyderef (hd V2558) V2857) (if (= list V2559) (let V2560 (shen.lazyderef (tl V2558) V2857) (if (cons? V2560) (let A (hd V2560) (let V2561 (shen.lazyderef (tl V2560) V2857) (if (= () V2561) (do (shen.incinfs) (thaw V2858)) (if (shen.pvar? V2561) (do (shen.bindv V2561 () V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2561 V2857) Result))) false)))) (if (shen.pvar? V2560) (let A (shen.newpv V2857) (do (shen.bindv V2560 (cons A ()) V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2560 V2857) Result)))) false))) (if (shen.pvar? V2559) (do (shen.bindv V2559 list V2857) (let Result (let V2562 (shen.lazyderef (tl V2558) V2857) (if (cons? V2562) (let A (hd V2562) (let V2563 (shen.lazyderef (tl V2562) V2857) (if (= () V2563) (do (shen.incinfs) (thaw V2858)) (if (shen.pvar? V2563) (do (shen.bindv V2563 () V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2563 V2857) Result))) false)))) (if (shen.pvar? V2562) (let A (shen.newpv V2857) (do (shen.bindv V2562 (cons A ()) V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2562 V2857) Result)))) false))) (do (shen.unbindv V2559 V2857) Result))) false))) (if (shen.pvar? V2558) (let A (shen.newpv V2857) (do (shen.bindv V2558 (cons list (cons A ())) V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2558 V2857) Result)))) false))) false)) Case)) Case)) Case)) Case)))
101
+ (defun shen.base (V2918 V2919 V2920 V2921) (let Case (let V2615 (shen.lazyderef V2919 V2920) (if (= number V2615) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2918 V2920)) V2920 V2921)) (if (shen.pvar? V2615) (do (shen.bindv V2615 number V2920) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2918 V2920)) V2920 V2921)) (do (shen.unbindv V2615 V2920) Result))) false))) (if (= Case false) (let Case (let V2616 (shen.lazyderef V2919 V2920) (if (= boolean V2616) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2918 V2920)) V2920 V2921)) (if (shen.pvar? V2616) (do (shen.bindv V2616 boolean V2920) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2918 V2920)) V2920 V2921)) (do (shen.unbindv V2616 V2920) Result))) false))) (if (= Case false) (let Case (let V2617 (shen.lazyderef V2919 V2920) (if (= string V2617) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2918 V2920)) V2920 V2921)) (if (shen.pvar? V2617) (do (shen.bindv V2617 string V2920) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2918 V2920)) V2920 V2921)) (do (shen.unbindv V2617 V2920) Result))) false))) (if (= Case false) (let Case (let V2618 (shen.lazyderef V2919 V2920) (if (= symbol V2618) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2918 V2920)) V2920 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2918 V2920))) V2920 V2921)))) (if (shen.pvar? V2618) (do (shen.bindv V2618 symbol V2920) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2918 V2920)) V2920 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2918 V2920))) V2920 V2921)))) (do (shen.unbindv V2618 V2920) Result))) false))) (if (= Case false) (let V2619 (shen.lazyderef V2918 V2920) (if (= () V2619) (let V2620 (shen.lazyderef V2919 V2920) (if (cons? V2620) (let V2621 (shen.lazyderef (hd V2620) V2920) (if (= list V2621) (let V2622 (shen.lazyderef (tl V2620) V2920) (if (cons? V2622) (let A (hd V2622) (let V2623 (shen.lazyderef (tl V2622) V2920) (if (= () V2623) (do (shen.incinfs) (thaw V2921)) (if (shen.pvar? V2623) (do (shen.bindv V2623 () V2920) (let Result (do (shen.incinfs) (thaw V2921)) (do (shen.unbindv V2623 V2920) Result))) false)))) (if (shen.pvar? V2622) (let A (shen.newpv V2920) (do (shen.bindv V2622 (cons A ()) V2920) (let Result (do (shen.incinfs) (thaw V2921)) (do (shen.unbindv V2622 V2920) Result)))) false))) (if (shen.pvar? V2621) (do (shen.bindv V2621 list V2920) (let Result (let V2624 (shen.lazyderef (tl V2620) V2920) (if (cons? V2624) (let A (hd V2624) (let V2625 (shen.lazyderef (tl V2624) V2920) (if (= () V2625) (do (shen.incinfs) (thaw V2921)) (if (shen.pvar? V2625) (do (shen.bindv V2625 () V2920) (let Result (do (shen.incinfs) (thaw V2921)) (do (shen.unbindv V2625 V2920) Result))) false)))) (if (shen.pvar? V2624) (let A (shen.newpv V2920) (do (shen.bindv V2624 (cons A ()) V2920) (let Result (do (shen.incinfs) (thaw V2921)) (do (shen.unbindv V2624 V2920) Result)))) false))) (do (shen.unbindv V2621 V2920) Result))) false))) (if (shen.pvar? V2620) (let A (shen.newpv V2920) (do (shen.bindv V2620 (cons list (cons A ())) V2920) (let Result (do (shen.incinfs) (thaw V2921)) (do (shen.unbindv V2620 V2920) Result)))) false))) false)) Case)) Case)) Case)) Case)))
102
102
 
103
- (defun shen.placeholder? (V2859) (and (symbol? V2859) (shen.placeholder-help? (str V2859))))
103
+ (defun shen.by_hypothesis (V2922 V2923 V2924 V2925 V2926) (let Case (let V2606 (shen.lazyderef V2924 V2925) (if (cons? V2606) (let V2607 (shen.lazyderef (hd V2606) V2925) (if (cons? V2607) (let Y (hd V2607) (let V2608 (shen.lazyderef (tl V2607) V2925) (if (cons? V2608) (let V2609 (shen.lazyderef (hd V2608) V2925) (if (= : V2609) (let V2610 (shen.lazyderef (tl V2608) V2925) (if (cons? V2610) (let B (hd V2610) (let V2611 (shen.lazyderef (tl V2610) V2925) (if (= () V2611) (do (shen.incinfs) (identical V2922 Y V2925 (freeze (unify! V2923 B V2925 V2926)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2612 (shen.lazyderef V2924 V2925) (if (cons? V2612) (let Hyp (tl V2612) (do (shen.incinfs) (shen.by_hypothesis V2922 V2923 Hyp V2925 V2926))) false)) Case)))
104
104
 
105
- (defun shen.placeholder-help? (V2866) (cond ((and (shen.+string? V2866) (and (= "&" (pos V2866 0)) (and (shen.+string? (tlstr V2866)) (= "&" (pos (tlstr V2866) 0))))) true) (true false)))
106
-
107
- (defun shen.by_hypothesis (V2867 V2868 V2869 V2870 V2871) (let Case (let V2544 (shen.lazyderef V2869 V2870) (if (cons? V2544) (let V2545 (shen.lazyderef (hd V2544) V2870) (if (cons? V2545) (let Y (hd V2545) (let V2546 (shen.lazyderef (tl V2545) V2870) (if (cons? V2546) (let V2547 (shen.lazyderef (hd V2546) V2870) (if (= : V2547) (let V2548 (shen.lazyderef (tl V2546) V2870) (if (cons? V2548) (let B (hd V2548) (let V2549 (shen.lazyderef (tl V2548) V2870) (if (= () V2549) (do (shen.incinfs) (identical V2867 Y V2870 (freeze (unify! V2868 B V2870 V2871)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2550 (shen.lazyderef V2869 V2870) (if (cons? V2550) (let Hyp (tl V2550) (do (shen.incinfs) (shen.by_hypothesis V2867 V2868 Hyp V2870 V2871))) false)) Case)))
108
-
109
- (defun shen.t*-def (V2872 V2873 V2874 V2875 V2876) (let V2538 (shen.lazyderef V2872 V2875) (if (cons? V2538) (let V2539 (shen.lazyderef (hd V2538) V2875) (if (= define V2539) (let V2540 (shen.lazyderef (tl V2538) V2875) (if (cons? V2540) (let F (hd V2540) (let X (tl V2540) (let E (shen.newpv V2875) (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 "
105
+ (defun shen.t*-def (V2927 V2928 V2929 V2930 V2931) (let V2600 (shen.lazyderef V2927 V2930) (if (cons? V2600) (let V2601 (shen.lazyderef (hd V2600) V2930) (if (= define V2601) (let V2602 (shen.lazyderef (tl V2600) V2930) (if (cons? V2602) (let F (hd V2602) (let X (tl V2602) (let E (shen.newpv V2930) (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 "
110
106
  " shen.s))) (simple-error "parse error
111
- ")))) F V2873 V2874 V2875 V2876))))) false)) false)) false)))
107
+ ")))) F V2928 V2929 V2930 V2931))))) false)) false)) false)))
112
108
 
113
- (defun shen.t*-defh (V2877 V2878 V2879 V2880 V2881 V2882) (let V2534 (shen.lazyderef V2877 V2881) (if (cons? V2534) (let Sig (hd V2534) (let Rules (tl V2534) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue Sig) V2878 V2879 V2880 Rules V2881 V2882)))) false)))
109
+ (defun shen.t*-defh (V2932 V2933 V2934 V2935 V2936 V2937) (let V2596 (shen.lazyderef V2932 V2936) (if (cons? V2596) (let Sig (hd V2596) (let Rules (tl V2596) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue Sig) V2933 V2934 V2935 Rules V2936 V2937)))) false)))
114
110
 
115
- (defun shen.t*-defhh (V2883 V2884 V2885 V2886 V2887 V2888 V2889 V2890) (do (shen.incinfs) (shen.t*-rules V2888 V2884 1 V2885 (cons (cons V2885 (cons : (cons V2884 ()))) V2887) V2889 (freeze (shen.memo V2885 V2883 V2886 V2889 V2890)))))
111
+ (defun shen.t*-defhh (V2938 V2939 V2940 V2941 V2942 V2943 V2944 V2945) (do (shen.incinfs) (shen.t*-rules V2943 V2939 1 V2940 (cons (cons V2940 (cons : (cons V2939 ()))) V2942) V2944 (freeze (shen.memo V2940 V2938 V2941 V2944 V2945)))))
116
112
 
117
- (defun shen.memo (V2891 V2892 V2893 V2894 V2895) (let Jnk (shen.newpv V2894) (do (shen.incinfs) (unify! V2893 V2892 V2894 (freeze (bind Jnk (declare (shen.lazyderef V2891 V2894) (shen.lazyderef V2893 V2894)) V2894 V2895))))))
113
+ (defun shen.memo (V2946 V2947 V2948 V2949 V2950) (let Jnk (shen.newpv V2949) (do (shen.incinfs) (unify! V2948 V2947 V2949 (freeze (bind Jnk (declare (shen.lazyderef V2946 V2949) (shen.lazyderef V2948 V2949)) V2949 V2950))))))
118
114
 
119
- (defun shen.<sig+rules> (V2900) (let Result (let Parse_shen.<signature> (shen.<signature> V2900) (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)))
115
+ (defun shen.<sig+rules> (V2955) (let Result (let Parse_shen.<signature> (shen.<signature> V2955) (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)))
120
116
 
121
- (defun shen.ue (V2901) (cond ((cons? V2901) (map shen.ue V2901)) ((variable? V2901) (concat && V2901)) (true V2901)))
117
+ (defun shen.ue (V2956) (cond ((cons? V2956) (map shen.ue V2956)) ((variable? V2956) (concat && V2956)) (true V2956)))
122
118
 
123
- (defun shen.t*-rules (V2902 V2903 V2904 V2905 V2906 V2907 V2908) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2509 (shen.lazyderef V2902 V2907) (if (= () V2509) (do (shen.incinfs) (thaw V2908)) false)) (if (= Case false) (let Case (let V2510 (shen.lazyderef V2902 V2907) (if (cons? V2510) (let V2511 (shen.lazyderef (hd V2510) V2907) (if (cons? V2511) (let V2512 (shen.lazyderef (hd V2511) V2907) (if (= () V2512) (let V2513 (shen.lazyderef (tl V2511) V2907) (if (cons? V2513) (let Action (hd V2513) (let V2514 (shen.lazyderef (tl V2513) V2907) (if (= () V2514) (let Rules (tl V2510) (let V2515 (shen.lazyderef V2903 V2907) (if (cons? V2515) (let V2516 (shen.lazyderef (hd V2515) V2907) (if (= --> V2516) (let V2517 (shen.lazyderef (tl V2515) V2907) (if (cons? V2517) (let A (hd V2517) (let V2518 (shen.lazyderef (tl V2517) V2907) (if (= () V2518) (do (shen.incinfs) (shen.t*-rule (cons () (cons (shen.ue Action) ())) A V2906 V2907 (freeze (cut Throwcontrol V2907 (freeze (shen.t*-rules Rules A (+ V2904 1) V2905 V2906 V2907 V2908)))))) false))) false)) false)) false))) false))) false)) false)) false)) false)) (if (= Case false) (let Case (let V2519 (shen.lazyderef V2902 V2907) (if (cons? V2519) (let Rule (hd V2519) (let Rules (tl V2519) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2903 V2906 V2907 (freeze (cut Throwcontrol V2907 (freeze (shen.t*-rules Rules V2903 (+ V2904 1) V2905 V2906 V2907 V2908)))))))) false)) (if (= Case false) (let Err (shen.newpv V2907) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2904 V2907) (cn " of " (shen.app (shen.lazyderef V2905 V2907) "" shen.a)) shen.a))) V2907 V2908))) Case)) Case)) Case)))))
119
+ (defun shen.ues (V2961) (cond ((shen.ue? V2961) (cons V2961 ())) ((cons? V2961) (union (shen.ues (hd V2961)) (shen.ues (tl V2961)))) (true ())))
124
120
 
125
- (defun shen.t*-rule (V2909 V2910 V2911 V2912 V2913) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2491 (shen.lazyderef V2909 V2912) (if (cons? V2491) (let V2492 (shen.lazyderef (hd V2491) V2912) (if (= () V2492) (let V2493 (shen.lazyderef (tl V2491) V2912) (if (cons? V2493) (let Action (hd V2493) (let V2494 (shen.lazyderef (tl V2493) V2912) (if (= () V2494) (do (shen.incinfs) (cut Throwcontrol V2912 (freeze (shen.t*-action (shen.curry Action) V2910 V2911 V2912 V2913)))) false))) false)) false)) false)) (if (= Case false) (let V2495 (shen.lazyderef V2909 V2912) (if (cons? V2495) (let V2496 (shen.lazyderef (hd V2495) V2912) (if (cons? V2496) (let Pattern (hd V2496) (let Patterns (tl V2496) (let V2497 (shen.lazyderef (tl V2495) V2912) (if (cons? V2497) (let Action (hd V2497) (let V2498 (shen.lazyderef (tl V2497) V2912) (if (= () V2498) (let V2499 (shen.lazyderef V2910 V2912) (if (cons? V2499) (let A (hd V2499) (let V2500 (shen.lazyderef (tl V2499) V2912) (if (cons? V2500) (let V2501 (shen.lazyderef (hd V2500) V2912) (if (= --> V2501) (let V2502 (shen.lazyderef (tl V2500) V2912) (if (cons? V2502) (let B (hd V2502) (let V2503 (shen.lazyderef (tl V2502) V2912) (if (= () V2503) (do (shen.incinfs) (shen.t*-pattern Pattern A V2912 (freeze (cut Throwcontrol V2912 (freeze (shen.t*-rule (cons Patterns (cons Action ())) B (cons (cons Pattern (cons : (cons A ()))) V2911) V2912 V2913)))))) false))) false)) false)) false))) false)) false))) false)))) false)) false)) Case)))))
121
+ (defun shen.ue? (V2962) (and (symbol? V2962) (shen.ue-h? (str V2962))))
126
122
 
127
- (defun shen.t*-action (V2914 V2915 V2916 V2917 V2918) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2468 (shen.lazyderef V2914 V2917) (if (cons? V2468) (let V2469 (shen.lazyderef (hd V2468) V2917) (if (= where V2469) (let V2470 (shen.lazyderef (tl V2468) V2917) (if (cons? V2470) (let P (hd V2470) (let V2471 (shen.lazyderef (tl V2470) V2917) (if (cons? V2471) (let Action (hd V2471) (let V2472 (shen.lazyderef (tl V2471) V2917) (if (= () V2472) (do (shen.incinfs) (cut Throwcontrol V2917 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2916 V2917 (freeze (cut Throwcontrol V2917 (freeze (shen.t*-action Action V2915 (cons (cons P (cons : (cons verified ()))) V2916) V2917 V2918)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2473 (shen.lazyderef V2914 V2917) (if (cons? V2473) (let V2474 (shen.lazyderef (hd V2473) V2917) (if (= shen.choicepoint! V2474) (let V2475 (shen.lazyderef (tl V2473) V2917) (if (cons? V2475) (let V2476 (shen.lazyderef (hd V2475) V2917) (if (cons? V2476) (let V2477 (shen.lazyderef (hd V2476) V2917) (if (cons? V2477) (let V2478 (shen.lazyderef (hd V2477) V2917) (if (= fail-if V2478) (let V2479 (shen.lazyderef (tl V2477) V2917) (if (cons? V2479) (let F (hd V2479) (let V2480 (shen.lazyderef (tl V2479) V2917) (if (= () V2480) (let V2481 (shen.lazyderef (tl V2476) V2917) (if (cons? V2481) (let Action (hd V2481) (let V2482 (shen.lazyderef (tl V2481) V2917) (if (= () V2482) (let V2483 (shen.lazyderef (tl V2475) V2917) (if (= () V2483) (do (shen.incinfs) (cut Throwcontrol V2917 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2915 V2916 V2917 V2918)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2484 (shen.lazyderef V2914 V2917) (if (cons? V2484) (let V2485 (shen.lazyderef (hd V2484) V2917) (if (= shen.choicepoint! V2485) (let V2486 (shen.lazyderef (tl V2484) V2917) (if (cons? V2486) (let Action (hd V2486) (let V2487 (shen.lazyderef (tl V2486) V2917) (if (= () V2487) (do (shen.incinfs) (cut Throwcontrol V2917 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2915 V2916 V2917 V2918)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2914 (cons : (cons V2915 ()))) V2916 V2917 V2918)) Case)) Case)) Case)))))
123
+ (defun shen.ue-h? (V2969) (cond ((and (shen.+string? V2969) (and (= "&" (pos V2969 0)) (and (shen.+string? (tlstr V2969)) (= "&" (pos (tlstr V2969) 0))))) true) (true false)))
128
124
 
129
- (defun shen.t*-pattern (V2919 V2920 V2921 V2922) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Hyp (shen.newpv V2921) (do (shen.incinfs) (shen.tms->hyp (shen.ues V2919) Hyp V2921 (freeze (cut Throwcontrol V2921 (freeze (shen.t* (cons V2919 (cons : (cons V2920 ()))) Hyp V2921 V2922))))))))))
125
+ (defun shen.t*-rules (V2970 V2971 V2972 V2973 V2974 V2975 V2976) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2571 (shen.lazyderef V2970 V2975) (if (= () V2571) (do (shen.incinfs) (thaw V2976)) false)) (if (= Case false) (let Case (let V2572 (shen.lazyderef V2970 V2975) (if (cons? V2572) (let V2573 (shen.lazyderef (hd V2572) V2975) (if (cons? V2573) (let V2574 (shen.lazyderef (hd V2573) V2975) (if (= () V2574) (let V2575 (shen.lazyderef (tl V2573) V2975) (if (cons? V2575) (let Action (hd V2575) (let V2576 (shen.lazyderef (tl V2575) V2975) (if (= () V2576) (let Rules (tl V2572) (let V2577 (shen.lazyderef V2971 V2975) (if (cons? V2577) (let V2578 (shen.lazyderef (hd V2577) V2975) (if (= --> V2578) (let V2579 (shen.lazyderef (tl V2577) V2975) (if (cons? V2579) (let A (hd V2579) (let V2580 (shen.lazyderef (tl V2579) V2975) (if (= () V2580) (do (shen.incinfs) (shen.t*-rule (cons () (cons (shen.ue Action) ())) A V2974 V2975 (freeze (cut Throwcontrol V2975 (freeze (shen.t*-rules Rules A (+ V2972 1) V2973 V2974 V2975 V2976)))))) false))) false)) false)) false))) false))) false)) false)) false)) false)) (if (= Case false) (let Case (let V2581 (shen.lazyderef V2970 V2975) (if (cons? V2581) (let Rule (hd V2581) (let Rules (tl V2581) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2971 V2974 V2975 (freeze (cut Throwcontrol V2975 (freeze (shen.t*-rules Rules V2971 (+ V2972 1) V2973 V2974 V2975 V2976)))))))) false)) (if (= Case false) (let Err (shen.newpv V2975) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2972 V2975) (cn " of " (shen.app (shen.lazyderef V2973 V2975) "" shen.a)) shen.a))) V2975 V2976))) Case)) Case)) Case)))))
130
126
 
131
- (defun shen.ues (V2927) (cond ((shen.ue? V2927) (cons V2927 ())) ((cons? V2927) (union (shen.ues (hd V2927)) (shen.ues (tl V2927)))) (true ())))
127
+ (defun shen.t*-rule (V2977 V2978 V2979 V2980 V2981) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2553 (shen.lazyderef V2977 V2980) (if (cons? V2553) (let V2554 (shen.lazyderef (hd V2553) V2980) (if (= () V2554) (let V2555 (shen.lazyderef (tl V2553) V2980) (if (cons? V2555) (let Action (hd V2555) (let V2556 (shen.lazyderef (tl V2555) V2980) (if (= () V2556) (do (shen.incinfs) (cut Throwcontrol V2980 (freeze (shen.t*-action (shen.curry Action) V2978 V2979 V2980 V2981)))) false))) false)) false)) false)) (if (= Case false) (let V2557 (shen.lazyderef V2977 V2980) (if (cons? V2557) (let V2558 (shen.lazyderef (hd V2557) V2980) (if (cons? V2558) (let Pattern (hd V2558) (let Patterns (tl V2558) (let V2559 (shen.lazyderef (tl V2557) V2980) (if (cons? V2559) (let Action (hd V2559) (let V2560 (shen.lazyderef (tl V2559) V2980) (if (= () V2560) (let V2561 (shen.lazyderef V2978 V2980) (if (cons? V2561) (let A (hd V2561) (let V2562 (shen.lazyderef (tl V2561) V2980) (if (cons? V2562) (let V2563 (shen.lazyderef (hd V2562) V2980) (if (= --> V2563) (let V2564 (shen.lazyderef (tl V2562) V2980) (if (cons? V2564) (let B (hd V2564) (let V2565 (shen.lazyderef (tl V2564) V2980) (if (= () V2565) (do (shen.incinfs) (shen.t*-pattern Pattern A V2980 (freeze (cut Throwcontrol V2980 (freeze (shen.t*-rule (cons Patterns (cons Action ())) B (cons (cons Pattern (cons : (cons A ()))) V2979) V2980 V2981)))))) false))) false)) false)) false))) false)) false))) false)))) false)) false)) Case)))))
132
128
 
133
- (defun shen.ue? (V2928) (and (symbol? V2928) (shen.ue-h? (str V2928))))
129
+ (defun shen.t*-action (V2982 V2983 V2984 V2985 V2986) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2530 (shen.lazyderef V2982 V2985) (if (cons? V2530) (let V2531 (shen.lazyderef (hd V2530) V2985) (if (= where V2531) (let V2532 (shen.lazyderef (tl V2530) V2985) (if (cons? V2532) (let P (hd V2532) (let V2533 (shen.lazyderef (tl V2532) V2985) (if (cons? V2533) (let Action (hd V2533) (let V2534 (shen.lazyderef (tl V2533) V2985) (if (= () V2534) (do (shen.incinfs) (cut Throwcontrol V2985 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2984 V2985 (freeze (cut Throwcontrol V2985 (freeze (shen.t*-action Action V2983 (cons (cons P (cons : (cons verified ()))) V2984) V2985 V2986)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2535 (shen.lazyderef V2982 V2985) (if (cons? V2535) (let V2536 (shen.lazyderef (hd V2535) V2985) (if (= shen.choicepoint! V2536) (let V2537 (shen.lazyderef (tl V2535) V2985) (if (cons? V2537) (let V2538 (shen.lazyderef (hd V2537) V2985) (if (cons? V2538) (let V2539 (shen.lazyderef (hd V2538) V2985) (if (cons? V2539) (let V2540 (shen.lazyderef (hd V2539) V2985) (if (= fail-if V2540) (let V2541 (shen.lazyderef (tl V2539) V2985) (if (cons? V2541) (let F (hd V2541) (let V2542 (shen.lazyderef (tl V2541) V2985) (if (= () V2542) (let V2543 (shen.lazyderef (tl V2538) V2985) (if (cons? V2543) (let Action (hd V2543) (let V2544 (shen.lazyderef (tl V2543) V2985) (if (= () V2544) (let V2545 (shen.lazyderef (tl V2537) V2985) (if (= () V2545) (do (shen.incinfs) (cut Throwcontrol V2985 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2983 V2984 V2985 V2986)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2546 (shen.lazyderef V2982 V2985) (if (cons? V2546) (let V2547 (shen.lazyderef (hd V2546) V2985) (if (= shen.choicepoint! V2547) (let V2548 (shen.lazyderef (tl V2546) V2985) (if (cons? V2548) (let Action (hd V2548) (let V2549 (shen.lazyderef (tl V2548) V2985) (if (= () V2549) (do (shen.incinfs) (cut Throwcontrol V2985 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2983 V2984 V2985 V2986)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2982 (cons : (cons V2983 ()))) V2984 V2985 V2986)) Case)) Case)) Case)))))
134
130
 
135
- (defun shen.ue-h? (V2935) (cond ((and (shen.+string? V2935) (and (= "&" (pos V2935 0)) (and (shen.+string? (tlstr V2935)) (= "&" (pos (tlstr V2935) 0))))) true) (true false)))
131
+ (defun shen.t*-pattern (V2987 V2988 V2989 V2990) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Hyp (shen.newpv V2989) (do (shen.incinfs) (shen.tms->hyp (shen.ues V2987) Hyp V2989 (freeze (cut Throwcontrol V2989 (freeze (shen.t* (cons V2987 (cons : (cons V2988 ()))) Hyp V2989 V2990))))))))))
136
132
 
137
- (defun shen.tms->hyp (V2936 V2937 V2938 V2939) (let Case (let V2452 (shen.lazyderef V2936 V2938) (if (= () V2452) (let V2453 (shen.lazyderef V2937 V2938) (if (= () V2453) (do (shen.incinfs) (thaw V2939)) (if (shen.pvar? V2453) (do (shen.bindv V2453 () V2938) (let Result (do (shen.incinfs) (thaw V2939)) (do (shen.unbindv V2453 V2938) Result))) false))) false)) (if (= Case false) (let V2454 (shen.lazyderef V2936 V2938) (if (cons? V2454) (let Tm2449 (hd V2454) (let Tms (tl V2454) (let V2455 (shen.lazyderef V2937 V2938) (if (cons? V2455) (let V2456 (shen.lazyderef (hd V2455) V2938) (if (cons? V2456) (let Tm (hd V2456) (let V2457 (shen.lazyderef (tl V2456) V2938) (if (cons? V2457) (let V2458 (shen.lazyderef (hd V2457) V2938) (if (= : V2458) (let V2459 (shen.lazyderef (tl V2457) V2938) (if (cons? V2459) (let A (hd V2459) (let V2460 (shen.lazyderef (tl V2459) V2938) (if (= () V2460) (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (if (shen.pvar? V2460) (do (shen.bindv V2460 () V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2460 V2938) Result))) false)))) (if (shen.pvar? V2459) (let A (shen.newpv V2938) (do (shen.bindv V2459 (cons A ()) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2459 V2938) Result)))) false))) (if (shen.pvar? V2458) (do (shen.bindv V2458 : V2938) (let Result (let V2461 (shen.lazyderef (tl V2457) V2938) (if (cons? V2461) (let A (hd V2461) (let V2462 (shen.lazyderef (tl V2461) V2938) (if (= () V2462) (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (if (shen.pvar? V2462) (do (shen.bindv V2462 () V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2462 V2938) Result))) false)))) (if (shen.pvar? V2461) (let A (shen.newpv V2938) (do (shen.bindv V2461 (cons A ()) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2461 V2938) Result)))) false))) (do (shen.unbindv V2458 V2938) Result))) false))) (if (shen.pvar? V2457) (let A (shen.newpv V2938) (do (shen.bindv V2457 (cons : (cons A ())) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2457 V2938) Result)))) false)))) (if (shen.pvar? V2456) (let Tm (shen.newpv V2938) (let A (shen.newpv V2938) (do (shen.bindv V2456 (cons Tm (cons : (cons A ()))) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2456 V2938) Result))))) false))) (if (shen.pvar? V2455) (let Tm (shen.newpv V2938) (let A (shen.newpv V2938) (let Hyp (shen.newpv V2938) (do (shen.bindv V2455 (cons (cons Tm (cons : (cons A ()))) Hyp) V2938) (let Result (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939)))) (do (shen.unbindv V2455 V2938) Result)))))) false))))) false)) Case)))
133
+ (defun shen.tms->hyp (V2991 V2992 V2993 V2994) (let Case (let V2514 (shen.lazyderef V2991 V2993) (if (= () V2514) (let V2515 (shen.lazyderef V2992 V2993) (if (= () V2515) (do (shen.incinfs) (thaw V2994)) (if (shen.pvar? V2515) (do (shen.bindv V2515 () V2993) (let Result (do (shen.incinfs) (thaw V2994)) (do (shen.unbindv V2515 V2993) Result))) false))) false)) (if (= Case false) (let V2516 (shen.lazyderef V2991 V2993) (if (cons? V2516) (let Tm2511 (hd V2516) (let Tms (tl V2516) (let V2517 (shen.lazyderef V2992 V2993) (if (cons? V2517) (let V2518 (shen.lazyderef (hd V2517) V2993) (if (cons? V2518) (let Tm (hd V2518) (let V2519 (shen.lazyderef (tl V2518) V2993) (if (cons? V2519) (let V2520 (shen.lazyderef (hd V2519) V2993) (if (= : V2520) (let V2521 (shen.lazyderef (tl V2519) V2993) (if (cons? V2521) (let A (hd V2521) (let V2522 (shen.lazyderef (tl V2521) V2993) (if (= () V2522) (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (if (shen.pvar? V2522) (do (shen.bindv V2522 () V2993) (let Result (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (do (shen.unbindv V2522 V2993) Result))) false)))) (if (shen.pvar? V2521) (let A (shen.newpv V2993) (do (shen.bindv V2521 (cons A ()) V2993) (let Result (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (do (shen.unbindv V2521 V2993) Result)))) false))) (if (shen.pvar? V2520) (do (shen.bindv V2520 : V2993) (let Result (let V2523 (shen.lazyderef (tl V2519) V2993) (if (cons? V2523) (let A (hd V2523) (let V2524 (shen.lazyderef (tl V2523) V2993) (if (= () V2524) (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (if (shen.pvar? V2524) (do (shen.bindv V2524 () V2993) (let Result (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (do (shen.unbindv V2524 V2993) Result))) false)))) (if (shen.pvar? V2523) (let A (shen.newpv V2993) (do (shen.bindv V2523 (cons A ()) V2993) (let Result (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (do (shen.unbindv V2523 V2993) Result)))) false))) (do (shen.unbindv V2520 V2993) Result))) false))) (if (shen.pvar? V2519) (let A (shen.newpv V2993) (do (shen.bindv V2519 (cons : (cons A ())) V2993) (let Result (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (do (shen.unbindv V2519 V2993) Result)))) false)))) (if (shen.pvar? V2518) (let Tm (shen.newpv V2993) (let A (shen.newpv V2993) (do (shen.bindv V2518 (cons Tm (cons : (cons A ()))) V2993) (let Result (let Hyp (tl V2517) (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994))))) (do (shen.unbindv V2518 V2993) Result))))) false))) (if (shen.pvar? V2517) (let Tm (shen.newpv V2993) (let A (shen.newpv V2993) (let Hyp (shen.newpv V2993) (do (shen.bindv V2517 (cons (cons Tm (cons : (cons A ()))) Hyp) V2993) (let Result (do (shen.incinfs) (unify! Tm Tm2511 V2993 (freeze (shen.tms->hyp Tms Hyp V2993 V2994)))) (do (shen.unbindv V2517 V2993) Result)))))) false))))) false)) Case)))
138
134
 
139
- (defun findall (V2940 V2941 V2942 V2943 V2944) (let B (shen.newpv V2943) (let A (shen.newpv V2943) (do (shen.incinfs) (bind A (gensym shen.a) V2943 (freeze (bind B (set (shen.lazyderef A V2943) ()) V2943 (freeze (shen.findallhelp V2940 V2941 V2942 A V2943 V2944)))))))))
135
+ (defun findall (V2995 V2996 V2997 V2998 V2999) (let B (shen.newpv V2998) (let A (shen.newpv V2998) (do (shen.incinfs) (bind A (gensym shen.a) V2998 (freeze (bind B (set (shen.lazyderef A V2998) ()) V2998 (freeze (shen.findallhelp V2995 V2996 V2997 A V2998 V2999)))))))))
140
136
 
141
- (defun shen.findallhelp (V2945 V2946 V2947 V2948 V2949 V2950) (let Case (do (shen.incinfs) (call V2946 V2949 (freeze (shen.remember V2948 V2945 V2949 (freeze (fwhen false V2949 V2950)))))) (if (= Case false) (do (shen.incinfs) (bind V2947 (value (shen.lazyderef V2948 V2949)) V2949 V2950)) Case)))
137
+ (defun shen.findallhelp (V3000 V3001 V3002 V3003 V3004 V3005) (let Case (do (shen.incinfs) (call V3001 V3004 (freeze (shen.remember V3003 V3000 V3004 (freeze (fwhen false V3004 V3005)))))) (if (= Case false) (do (shen.incinfs) (bind V3002 (value (shen.lazyderef V3003 V3004)) V3004 V3005)) Case)))
142
138
 
143
- (defun shen.remember (V2951 V2952 V2953 V2954) (let B (shen.newpv V2953) (do (shen.incinfs) (bind B (set (shen.deref V2951 V2953) (cons (shen.deref V2952 V2953) (value (shen.deref V2951 V2953)))) V2953 V2954))))
139
+ (defun shen.remember (V3006 V3007 V3008 V3009) (let B (shen.newpv V3008) (do (shen.incinfs) (bind B (set (shen.deref V3006 V3008) (cons (shen.deref V3007 V3008) (value (shen.deref V3006 V3008)))) V3008 V3009))))
144
140
 
145
- (defun shen.t*-defcc (V2955 V2956 V2957 V2958 V2959) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2425 (shen.lazyderef V2955 V2958) (if (cons? V2425) (let V2426 (shen.lazyderef (hd V2425) V2958) (if (= defcc V2426) (let V2427 (shen.lazyderef (tl V2425) V2958) (if (cons? V2427) (let F (hd V2427) (let V2428 (shen.lazyderef (tl V2427) V2958) (if (cons? V2428) (let V2429 (shen.lazyderef (hd V2428) V2958) (if (= { V2429) (let V2430 (shen.lazyderef (tl V2428) V2958) (if (cons? V2430) (let V2431 (shen.lazyderef (hd V2430) V2958) (if (cons? V2431) (let V2432 (shen.lazyderef (hd V2431) V2958) (if (= list V2432) (let V2433 (shen.lazyderef (tl V2431) V2958) (if (cons? V2433) (let A (hd V2433) (let V2434 (shen.lazyderef (tl V2433) V2958) (if (= () V2434) (let V2435 (shen.lazyderef (tl V2430) V2958) (if (cons? V2435) (let V2436 (shen.lazyderef (hd V2435) V2958) (if (= ==> V2436) (let V2437 (shen.lazyderef (tl V2435) V2958) (if (cons? V2437) (let B (hd V2437) (let V2438 (shen.lazyderef (tl V2437) V2958) (if (cons? V2438) (let V2439 (shen.lazyderef (hd V2438) V2958) (if (= } V2439) (let Rest (tl V2438) (let Rest& (shen.newpv V2958) (let Rest&& (shen.newpv V2958) (let Rules (shen.newpv V2958) (let ListA&& (shen.newpv V2958) (let B&& (shen.newpv V2958) (let Sig (shen.newpv V2958) (let Declare (shen.newpv V2958) (do (shen.incinfs) (bind Sig (shen.placeholders (cons (cons list (cons (shen.lazyderef A V2958) ())) (cons ==> (cons (shen.lazyderef B V2958) ()))) (shen.extract_vars (cons (cons list (cons (shen.lazyderef A V2958) ())) (cons ==> (cons (shen.lazyderef B V2958) ()))))) V2958 (freeze (bind ListA&& (hd (shen.lazyderef Sig V2958)) V2958 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V2958)))) V2958 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V2958)) V2958 (freeze (bind Rest&& (shen.placeholders (shen.lazyderef Rest& V2958) (shen.extract_vars (shen.lazyderef Rest& V2958))) V2958 (freeze (shen.get-rules Rules Rest&& V2958 (freeze (cut Throwcontrol V2958 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V2957) 1 V2958 (freeze (unify V2956 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V2958 (freeze (bind Declare (declare (shen.lazyderef F V2958) (cons (cons list (cons (shen.lazyderef A V2958) ())) (cons ==> (cons (shen.lazyderef B V2958) ())))) V2958 V2959)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
141
+ (defun shen.t*-defcc (V3010 V3011 V3012 V3013 V3014) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2487 (shen.lazyderef V3010 V3013) (if (cons? V2487) (let V2488 (shen.lazyderef (hd V2487) V3013) (if (= defcc V2488) (let V2489 (shen.lazyderef (tl V2487) V3013) (if (cons? V2489) (let F (hd V2489) (let V2490 (shen.lazyderef (tl V2489) V3013) (if (cons? V2490) (let V2491 (shen.lazyderef (hd V2490) V3013) (if (= { V2491) (let V2492 (shen.lazyderef (tl V2490) V3013) (if (cons? V2492) (let V2493 (shen.lazyderef (hd V2492) V3013) (if (cons? V2493) (let V2494 (shen.lazyderef (hd V2493) V3013) (if (= list V2494) (let V2495 (shen.lazyderef (tl V2493) V3013) (if (cons? V2495) (let A (hd V2495) (let V2496 (shen.lazyderef (tl V2495) V3013) (if (= () V2496) (let V2497 (shen.lazyderef (tl V2492) V3013) (if (cons? V2497) (let V2498 (shen.lazyderef (hd V2497) V3013) (if (= ==> V2498) (let V2499 (shen.lazyderef (tl V2497) V3013) (if (cons? V2499) (let B (hd V2499) (let V2500 (shen.lazyderef (tl V2499) V3013) (if (cons? V2500) (let V2501 (shen.lazyderef (hd V2500) V3013) (if (= } V2501) (let Rest (tl V2500) (let Rest& (shen.newpv V3013) (let Rest&& (shen.newpv V3013) (let Rules (shen.newpv V3013) (let ListA&& (shen.newpv V3013) (let B&& (shen.newpv V3013) (let Sig (shen.newpv V3013) (let Declare (shen.newpv V3013) (do (shen.incinfs) (bind Sig (shen.ue (cons (cons list (cons (shen.lazyderef A V3013) ())) (cons ==> (cons (shen.lazyderef B V3013) ())))) V3013 (freeze (bind ListA&& (hd (shen.lazyderef Sig V3013)) V3013 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V3013)))) V3013 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V3013)) V3013 (freeze (bind Rest&& (shen.ue (shen.lazyderef Rest& V3013)) V3013 (freeze (shen.get-rules Rules Rest&& V3013 (freeze (cut Throwcontrol V3013 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V3012) 1 V3013 (freeze (unify V3011 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V3013 (freeze (bind Declare (declare (shen.lazyderef F V3013) (cons (cons list (cons (shen.lazyderef A V3013) ())) (cons ==> (cons (shen.lazyderef B V3013) ())))) V3013 V3014)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
146
142
 
147
- (defun shen.plug-wildcards (V2960) (cond ((cons? V2960) (map shen.plug-wildcards V2960)) ((= V2960 _) (gensym (intern "X"))) (true V2960)))
143
+ (defun shen.plug-wildcards (V3015) (cond ((cons? V3015) (map shen.plug-wildcards V3015)) ((= V3015 _) (gensym (intern "X"))) (true V3015)))
148
144
 
149
- (defun shen.get-rules (V2961 V2962 V2963 V2964) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2418 (shen.lazyderef V2961 V2963) (if (= () V2418) (let V2419 (shen.lazyderef V2962 V2963) (if (= () V2419) (do (shen.incinfs) (cut Throwcontrol V2963 V2964)) false)) (if (shen.pvar? V2418) (do (shen.bindv V2418 () V2963) (let Result (let V2420 (shen.lazyderef V2962 V2963) (if (= () V2420) (do (shen.incinfs) (cut Throwcontrol V2963 V2964)) false)) (do (shen.unbindv V2418 V2963) Result))) false))) (if (= Case false) (let V2421 (shen.lazyderef V2961 V2963) (if (cons? V2421) (let Rule (hd V2421) (let Rules (tl V2421) (let Other (shen.newpv V2963) (do (shen.incinfs) (shen.first-rule V2962 Rule Other V2963 (freeze (cut Throwcontrol V2963 (freeze (shen.get-rules Rules Other V2963 V2964))))))))) (if (shen.pvar? V2421) (let Rule (shen.newpv V2963) (let Rules (shen.newpv V2963) (do (shen.bindv V2421 (cons Rule Rules) V2963) (let Result (let Other (shen.newpv V2963) (do (shen.incinfs) (shen.first-rule V2962 Rule Other V2963 (freeze (cut Throwcontrol V2963 (freeze (shen.get-rules Rules Other V2963 V2964))))))) (do (shen.unbindv V2421 V2963) Result))))) false))) Case)))))
145
+ (defun shen.get-rules (V3016 V3017 V3018 V3019) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2480 (shen.lazyderef V3016 V3018) (if (= () V2480) (let V2481 (shen.lazyderef V3017 V3018) (if (= () V2481) (do (shen.incinfs) (cut Throwcontrol V3018 V3019)) false)) (if (shen.pvar? V2480) (do (shen.bindv V2480 () V3018) (let Result (let V2482 (shen.lazyderef V3017 V3018) (if (= () V2482) (do (shen.incinfs) (cut Throwcontrol V3018 V3019)) false)) (do (shen.unbindv V2480 V3018) Result))) false))) (if (= Case false) (let V2483 (shen.lazyderef V3016 V3018) (if (cons? V2483) (let Rule (hd V2483) (let Rules (tl V2483) (let Other (shen.newpv V3018) (do (shen.incinfs) (shen.first-rule V3017 Rule Other V3018 (freeze (cut Throwcontrol V3018 (freeze (shen.get-rules Rules Other V3018 V3019))))))))) (if (shen.pvar? V2483) (let Rule (shen.newpv V3018) (let Rules (shen.newpv V3018) (do (shen.bindv V2483 (cons Rule Rules) V3018) (let Result (let Other (shen.newpv V3018) (do (shen.incinfs) (shen.first-rule V3017 Rule Other V3018 (freeze (cut Throwcontrol V3018 (freeze (shen.get-rules Rules Other V3018 V3019))))))) (do (shen.unbindv V2483 V3018) Result))))) false))) Case)))))
150
146
 
151
- (defun shen.first-rule (V2965 V2966 V2967 V2968 V2969) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2411 (shen.lazyderef V2965 V2968) (if (cons? V2411) (let V2412 (shen.lazyderef (hd V2411) V2968) (if (= ; V2412) (let Other2406 (tl V2411) (let V2413 (shen.lazyderef V2966 V2968) (if (= () V2413) (do (shen.incinfs) (unify! V2967 Other2406 V2968 (freeze (cut Throwcontrol V2968 V2969)))) (if (shen.pvar? V2413) (do (shen.bindv V2413 () V2968) (let Result (do (shen.incinfs) (unify! V2967 Other2406 V2968 (freeze (cut Throwcontrol V2968 V2969)))) (do (shen.unbindv V2413 V2968) Result))) false)))) false)) false)) (if (= Case false) (let V2414 (shen.lazyderef V2965 V2968) (if (cons? V2414) (let X2407 (hd V2414) (let Rest (tl V2414) (let V2415 (shen.lazyderef V2966 V2968) (if (cons? V2415) (let X (hd V2415) (let Rule (tl V2415) (do (shen.incinfs) (unify! X X2407 V2968 (freeze (shen.first-rule Rest Rule V2967 V2968 V2969)))))) (if (shen.pvar? V2415) (let X (shen.newpv V2968) (let Rule (shen.newpv V2968) (do (shen.bindv V2415 (cons X Rule) V2968) (let Result (do (shen.incinfs) (unify! X X2407 V2968 (freeze (shen.first-rule Rest Rule V2967 V2968 V2969)))) (do (shen.unbindv V2415 V2968) Result))))) false))))) false)) Case)))))
147
+ (defun shen.first-rule (V3020 V3021 V3022 V3023 V3024) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2473 (shen.lazyderef V3020 V3023) (if (cons? V2473) (let V2474 (shen.lazyderef (hd V2473) V3023) (if (= ; V2474) (let Other2468 (tl V2473) (let V2475 (shen.lazyderef V3021 V3023) (if (= () V2475) (do (shen.incinfs) (unify! V3022 Other2468 V3023 (freeze (cut Throwcontrol V3023 V3024)))) (if (shen.pvar? V2475) (do (shen.bindv V2475 () V3023) (let Result (do (shen.incinfs) (unify! V3022 Other2468 V3023 (freeze (cut Throwcontrol V3023 V3024)))) (do (shen.unbindv V2475 V3023) Result))) false)))) false)) false)) (if (= Case false) (let V2476 (shen.lazyderef V3020 V3023) (if (cons? V2476) (let X2469 (hd V2476) (let Rest (tl V2476) (let V2477 (shen.lazyderef V3021 V3023) (if (cons? V2477) (let X (hd V2477) (let Rule (tl V2477) (do (shen.incinfs) (unify! X X2469 V3023 (freeze (shen.first-rule Rest Rule V3022 V3023 V3024)))))) (if (shen.pvar? V2477) (let X (shen.newpv V3023) (let Rule (shen.newpv V3023) (do (shen.bindv V2477 (cons X Rule) V3023) (let Result (do (shen.incinfs) (unify! X X2469 V3023 (freeze (shen.first-rule Rest Rule V3022 V3023 V3024)))) (do (shen.unbindv V2477 V3023) Result))))) false))))) false)) Case)))))
152
148
 
153
- (defun shen.tc-rules (V2970 V2971 V2972 V2973 V2974 V2975 V2976 V2977) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2400 (shen.lazyderef V2971 V2976) (if (= () V2400) (do (shen.incinfs) (thaw V2977)) false)) (if (= Case false) (let V2401 (shen.lazyderef V2971 V2976) (if (cons? V2401) (let Rule (hd V2401) (let Rules (tl V2401) (let V2402 (shen.lazyderef V2972 V2976) (if (cons? V2402) (let V2403 (shen.lazyderef (hd V2402) V2976) (if (= list V2403) (let V2404 (shen.lazyderef (tl V2402) V2976) (if (cons? V2404) (let A (hd V2404) (let V2405 (shen.lazyderef (tl V2404) V2976) (if (= () V2405) (let M (shen.newpv V2976) (do (shen.incinfs) (shen.tc-rule V2970 Rule A V2973 V2974 V2975 V2976 (freeze (bind M (+ (shen.deref V2975 V2976) 1) V2976 (freeze (cut Throwcontrol V2976 (freeze (shen.tc-rules V2970 Rules (cons list (cons A ())) V2973 V2974 M V2976 V2977))))))))) false))) false)) false)) false)))) false)) Case)))))
149
+ (defun shen.tc-rules (V3025 V3026 V3027 V3028 V3029 V3030 V3031 V3032) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2462 (shen.lazyderef V3026 V3031) (if (= () V2462) (do (shen.incinfs) (thaw V3032)) false)) (if (= Case false) (let V2463 (shen.lazyderef V3026 V3031) (if (cons? V2463) (let Rule (hd V2463) (let Rules (tl V2463) (let V2464 (shen.lazyderef V3027 V3031) (if (cons? V2464) (let V2465 (shen.lazyderef (hd V2464) V3031) (if (= list V2465) (let V2466 (shen.lazyderef (tl V2464) V3031) (if (cons? V2466) (let A (hd V2466) (let V2467 (shen.lazyderef (tl V2466) V3031) (if (= () V2467) (let M (shen.newpv V3031) (do (shen.incinfs) (shen.tc-rule V3025 Rule A V3028 V3029 V3030 V3031 (freeze (bind M (+ (shen.deref V3030 V3031) 1) V3031 (freeze (cut Throwcontrol V3031 (freeze (shen.tc-rules V3025 Rules (cons list (cons A ())) V3028 V3029 M V3031 V3032))))))))) false))) false)) false)) false)))) false)) Case)))))
154
150
 
155
- (defun shen.tc-rule (V2978 V2979 V2980 V2981 V2982 V2983 V2984 V2985) (let Case (do (shen.incinfs) (shen.check-defcc-rule V2979 V2980 V2981 V2982 V2984 V2985)) (if (= Case false) (let Err (shen.newpv V2984) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2983 V2984) (cn " of " (shen.app (shen.lazyderef V2978 V2984) "" shen.a)) shen.a))) V2984 V2985))) Case)))
151
+ (defun shen.tc-rule (V3033 V3034 V3035 V3036 V3037 V3038 V3039 V3040) (let Case (do (shen.incinfs) (shen.check-defcc-rule V3034 V3035 V3036 V3037 V3039 V3040)) (if (= Case false) (let Err (shen.newpv V3039) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V3038 V3039) (cn " of " (shen.app (shen.lazyderef V3033 V3039) "" shen.a)) shen.a))) V3039 V3040))) Case)))
156
152
 
157
- (defun shen.check-defcc-rule (V2986 V2987 V2988 V2989 V2990 V2991) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V2990) (let Semantics (shen.newpv V2990) (let SynHyps (shen.newpv V2990) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V2986 V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.syntax-hyps Syntax V2989 SynHyps V2987 V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.syntax-check Syntax V2987 SynHyps V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.semantics-check Semantics V2988 SynHyps V2990 V2991))))))))))))))))))))
153
+ (defun shen.check-defcc-rule (V3041 V3042 V3043 V3044 V3045 V3046) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V3045) (let Semantics (shen.newpv V3045) (let SynHyps (shen.newpv V3045) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V3041 V3045 (freeze (cut Throwcontrol V3045 (freeze (shen.syntax-hyps Syntax V3044 SynHyps V3042 V3045 (freeze (cut Throwcontrol V3045 (freeze (shen.syntax-check Syntax V3042 SynHyps V3045 (freeze (cut Throwcontrol V3045 (freeze (shen.semantics-check Semantics V3043 SynHyps V3045 V3046))))))))))))))))))))
158
154
 
159
- (defun shen.syntax-hyps (V2992 V2993 V2994 V2995 V2996 V2997) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2371 (shen.lazyderef V2992 V2996) (if (= () V2371) (do (shen.incinfs) (unify! V2994 V2993 V2996 V2997)) false)) (if (= Case false) (let Case (let V2372 (shen.lazyderef V2992 V2996) (if (cons? V2372) (let V2373 (shen.lazyderef (hd V2372) V2996) (if (cons? V2373) (let X (hd V2373) (let Y (tl V2373) (let Z (tl V2372) (let W (shen.newpv V2996) (do (shen.incinfs) (cut Throwcontrol V2996 (freeze (shen.conc (cons X Y) Z W V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps W V2993 V2994 V2995 V2996 V2997)))))))))))) false)) false)) (if (= Case false) (let Case (let V2374 (shen.lazyderef V2992 V2996) (if (cons? V2374) (let X2365 (hd V2374) (let Y (tl V2374) (let V2375 (shen.lazyderef V2994 V2996) (if (cons? V2375) (let V2376 (shen.lazyderef (hd V2375) V2996) (if (cons? V2376) (let X (hd V2376) (let V2377 (shen.lazyderef (tl V2376) V2996) (if (cons? V2377) (let V2378 (shen.lazyderef (hd V2377) V2996) (if (= : V2378) (let V2379 (shen.lazyderef (tl V2377) V2996) (if (cons? V2379) (let A2366 (hd V2379) (let V2380 (shen.lazyderef (tl V2379) V2996) (if (= () V2380) (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (if (shen.pvar? V2380) (do (shen.bindv V2380 () V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2380 V2996) Result))) false)))) (if (shen.pvar? V2379) (let A2366 (shen.newpv V2996) (do (shen.bindv V2379 (cons A2366 ()) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2379 V2996) Result)))) false))) (if (shen.pvar? V2378) (do (shen.bindv V2378 : V2996) (let Result (let V2381 (shen.lazyderef (tl V2377) V2996) (if (cons? V2381) (let A2366 (hd V2381) (let V2382 (shen.lazyderef (tl V2381) V2996) (if (= () V2382) (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (if (shen.pvar? V2382) (do (shen.bindv V2382 () V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2382 V2996) Result))) false)))) (if (shen.pvar? V2381) (let A2366 (shen.newpv V2996) (do (shen.bindv V2381 (cons A2366 ()) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2381 V2996) Result)))) false))) (do (shen.unbindv V2378 V2996) Result))) false))) (if (shen.pvar? V2377) (let A2366 (shen.newpv V2996) (do (shen.bindv V2377 (cons : (cons A2366 ())) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2377 V2996) Result)))) false)))) (if (shen.pvar? V2376) (let X (shen.newpv V2996) (let A2366 (shen.newpv V2996) (do (shen.bindv V2376 (cons X (cons : (cons A2366 ()))) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2376 V2996) Result))))) false))) (if (shen.pvar? V2375) (let X (shen.newpv V2996) (let A2366 (shen.newpv V2996) (let SynHyps (shen.newpv V2996) (do (shen.bindv V2375 (cons (cons X (cons : (cons A2366 ()))) SynHyps) V2996) (let Result (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997)))))))))) (do (shen.unbindv V2375 V2996) Result)))))) false))))) false)) (if (= Case false) (let V2383 (shen.lazyderef V2992 V2996) (if (cons? V2383) (let Y (tl V2383) (do (shen.incinfs) (shen.syntax-hyps Y V2993 V2994 V2995 V2996 V2997))) false)) Case)) Case)) Case)))))
155
+ (defun shen.syntax-hyps (V3047 V3048 V3049 V3050 V3051 V3052) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2435 (shen.lazyderef V3047 V3051) (if (= () V2435) (do (shen.incinfs) (unify! V3049 V3048 V3051 V3052)) false)) (if (= Case false) (let Case (let V2436 (shen.lazyderef V3047 V3051) (if (cons? V2436) (let X2429 (hd V2436) (let Y (tl V2436) (let V2437 (shen.lazyderef V3049 V3051) (if (cons? V2437) (let V2438 (shen.lazyderef (hd V2437) V3051) (if (cons? V2438) (let X (hd V2438) (let V2439 (shen.lazyderef (tl V2438) V3051) (if (cons? V2439) (let V2440 (shen.lazyderef (hd V2439) V3051) (if (= : V2440) (let V2441 (shen.lazyderef (tl V2439) V3051) (if (cons? V2441) (let A2430 (hd V2441) (let V2442 (shen.lazyderef (tl V2441) V3051) (if (= () V2442) (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (if (shen.pvar? V2442) (do (shen.bindv V2442 () V3051) (let Result (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (do (shen.unbindv V2442 V3051) Result))) false)))) (if (shen.pvar? V2441) (let A2430 (shen.newpv V3051) (do (shen.bindv V2441 (cons A2430 ()) V3051) (let Result (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (do (shen.unbindv V2441 V3051) Result)))) false))) (if (shen.pvar? V2440) (do (shen.bindv V2440 : V3051) (let Result (let V2443 (shen.lazyderef (tl V2439) V3051) (if (cons? V2443) (let A2430 (hd V2443) (let V2444 (shen.lazyderef (tl V2443) V3051) (if (= () V2444) (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (if (shen.pvar? V2444) (do (shen.bindv V2444 () V3051) (let Result (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (do (shen.unbindv V2444 V3051) Result))) false)))) (if (shen.pvar? V2443) (let A2430 (shen.newpv V3051) (do (shen.bindv V2443 (cons A2430 ()) V3051) (let Result (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (do (shen.unbindv V2443 V3051) Result)))) false))) (do (shen.unbindv V2440 V3051) Result))) false))) (if (shen.pvar? V2439) (let A2430 (shen.newpv V3051) (do (shen.bindv V2439 (cons : (cons A2430 ())) V3051) (let Result (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (do (shen.unbindv V2439 V3051) Result)))) false)))) (if (shen.pvar? V2438) (let X (shen.newpv V3051) (let A2430 (shen.newpv V3051) (do (shen.bindv V2438 (cons X (cons : (cons A2430 ()))) V3051) (let Result (let SynHyps (tl V2437) (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052))))))))))) (do (shen.unbindv V2438 V3051) Result))))) false))) (if (shen.pvar? V2437) (let X (shen.newpv V3051) (let A2430 (shen.newpv V3051) (let SynHyps (shen.newpv V3051) (do (shen.bindv V2437 (cons (cons X (cons : (cons A2430 ()))) SynHyps) V3051) (let Result (do (shen.incinfs) (unify! V3050 A2430 V3051 (freeze (unify! X X2429 V3051 (freeze (fwhen (shen.ue? (shen.deref X V3051)) V3051 (freeze (cut Throwcontrol V3051 (freeze (shen.syntax-hyps Y V3048 SynHyps V3050 V3051 V3052)))))))))) (do (shen.unbindv V2437 V3051) Result)))))) false))))) false)) (if (= Case false) (let V2445 (shen.lazyderef V3047 V3051) (if (cons? V2445) (let Y (tl V2445) (do (shen.incinfs) (shen.syntax-hyps Y V3048 V3049 V3050 V3051 V3052))) false)) Case)) Case)))))
160
156
 
161
- (defun shen.get-syntax+semantics (V2998 V2999 V3000 V3001 V3002) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2337 (shen.lazyderef V2998 V3001) (if (= () V2337) (let V2338 (shen.lazyderef V3000 V3001) (if (cons? V2338) (let V2339 (shen.lazyderef (hd V2338) V3001) (if (= := V2339) (let V2340 (shen.lazyderef (tl V2338) V3001) (if (cons? V2340) (let Semantics (hd V2340) (let V2341 (shen.lazyderef (tl V2340) V3001) (if (= () V2341) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (shen.lazyderef Semantics V3001) V3001 V3002)))) false))) false)) false)) false)) (if (shen.pvar? V2337) (do (shen.bindv V2337 () V3001) (let Result (let V2342 (shen.lazyderef V3000 V3001) (if (cons? V2342) (let V2343 (shen.lazyderef (hd V2342) V3001) (if (= := V2343) (let V2344 (shen.lazyderef (tl V2342) V3001) (if (cons? V2344) (let Semantics (hd V2344) (let V2345 (shen.lazyderef (tl V2344) V3001) (if (= () V2345) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (shen.lazyderef Semantics V3001) V3001 V3002)))) false))) false)) false)) false)) (do (shen.unbindv V2337 V3001) Result))) false))) (if (= Case false) (let Case (let V2346 (shen.lazyderef V2998 V3001) (if (= () V2346) (let V2347 (shen.lazyderef V3000 V3001) (if (cons? V2347) (let V2348 (shen.lazyderef (hd V2347) V3001) (if (= := V2348) (let V2349 (shen.lazyderef (tl V2347) V3001) (if (cons? V2349) (let Semantics (hd V2349) (let V2350 (shen.lazyderef (tl V2349) V3001) (if (cons? V2350) (let V2351 (shen.lazyderef (hd V2350) V3001) (if (= where V2351) (let V2352 (shen.lazyderef (tl V2350) V3001) (if (cons? V2352) (let G (hd V2352) (let V2353 (shen.lazyderef (tl V2352) V3001) (if (= () V2353) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (cons where (cons (shen.lazyderef G V3001) (cons (shen.lazyderef Semantics V3001) ()))) V3001 V3002)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2346) (do (shen.bindv V2346 () V3001) (let Result (let V2354 (shen.lazyderef V3000 V3001) (if (cons? V2354) (let V2355 (shen.lazyderef (hd V2354) V3001) (if (= := V2355) (let V2356 (shen.lazyderef (tl V2354) V3001) (if (cons? V2356) (let Semantics (hd V2356) (let V2357 (shen.lazyderef (tl V2356) V3001) (if (cons? V2357) (let V2358 (shen.lazyderef (hd V2357) V3001) (if (= where V2358) (let V2359 (shen.lazyderef (tl V2357) V3001) (if (cons? V2359) (let G (hd V2359) (let V2360 (shen.lazyderef (tl V2359) V3001) (if (= () V2360) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (cons where (cons (shen.lazyderef G V3001) (cons (shen.lazyderef Semantics V3001) ()))) V3001 V3002)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2346 V3001) Result))) false))) (if (= Case false) (let V2361 (shen.lazyderef V2998 V3001) (if (cons? V2361) (let X2333 (hd V2361) (let Syntax (tl V2361) (let V2362 (shen.lazyderef V3000 V3001) (if (cons? V2362) (let X (hd V2362) (let Rule (tl V2362) (do (shen.incinfs) (unify! X X2333 V3001 (freeze (shen.get-syntax+semantics Syntax V2999 Rule V3001 V3002)))))) false)))) (if (shen.pvar? V2361) (let X2333 (shen.newpv V3001) (let Syntax (shen.newpv V3001) (do (shen.bindv V2361 (cons X2333 Syntax) V3001) (let Result (let V2363 (shen.lazyderef V3000 V3001) (if (cons? V2363) (let X (hd V2363) (let Rule (tl V2363) (do (shen.incinfs) (unify! X X2333 V3001 (freeze (shen.get-syntax+semantics Syntax V2999 Rule V3001 V3002)))))) false)) (do (shen.unbindv V2361 V3001) Result))))) false))) Case)) Case)))))
157
+ (defun shen.get-syntax+semantics (V3053 V3054 V3055 V3056 V3057) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2401 (shen.lazyderef V3053 V3056) (if (= () V2401) (let V2402 (shen.lazyderef V3055 V3056) (if (cons? V2402) (let V2403 (shen.lazyderef (hd V2402) V3056) (if (= := V2403) (let V2404 (shen.lazyderef (tl V2402) V3056) (if (cons? V2404) (let Semantics (hd V2404) (let V2405 (shen.lazyderef (tl V2404) V3056) (if (= () V2405) (do (shen.incinfs) (cut Throwcontrol V3056 (freeze (bind V3054 (shen.lazyderef Semantics V3056) V3056 V3057)))) false))) false)) false)) false)) (if (shen.pvar? V2401) (do (shen.bindv V2401 () V3056) (let Result (let V2406 (shen.lazyderef V3055 V3056) (if (cons? V2406) (let V2407 (shen.lazyderef (hd V2406) V3056) (if (= := V2407) (let V2408 (shen.lazyderef (tl V2406) V3056) (if (cons? V2408) (let Semantics (hd V2408) (let V2409 (shen.lazyderef (tl V2408) V3056) (if (= () V2409) (do (shen.incinfs) (cut Throwcontrol V3056 (freeze (bind V3054 (shen.lazyderef Semantics V3056) V3056 V3057)))) false))) false)) false)) false)) (do (shen.unbindv V2401 V3056) Result))) false))) (if (= Case false) (let Case (let V2410 (shen.lazyderef V3053 V3056) (if (= () V2410) (let V2411 (shen.lazyderef V3055 V3056) (if (cons? V2411) (let V2412 (shen.lazyderef (hd V2411) V3056) (if (= := V2412) (let V2413 (shen.lazyderef (tl V2411) V3056) (if (cons? V2413) (let Semantics (hd V2413) (let V2414 (shen.lazyderef (tl V2413) V3056) (if (cons? V2414) (let V2415 (shen.lazyderef (hd V2414) V3056) (if (= where V2415) (let V2416 (shen.lazyderef (tl V2414) V3056) (if (cons? V2416) (let G (hd V2416) (let V2417 (shen.lazyderef (tl V2416) V3056) (if (= () V2417) (do (shen.incinfs) (cut Throwcontrol V3056 (freeze (bind V3054 (cons where (cons (shen.lazyderef G V3056) (cons (shen.lazyderef Semantics V3056) ()))) V3056 V3057)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2410) (do (shen.bindv V2410 () V3056) (let Result (let V2418 (shen.lazyderef V3055 V3056) (if (cons? V2418) (let V2419 (shen.lazyderef (hd V2418) V3056) (if (= := V2419) (let V2420 (shen.lazyderef (tl V2418) V3056) (if (cons? V2420) (let Semantics (hd V2420) (let V2421 (shen.lazyderef (tl V2420) V3056) (if (cons? V2421) (let V2422 (shen.lazyderef (hd V2421) V3056) (if (= where V2422) (let V2423 (shen.lazyderef (tl V2421) V3056) (if (cons? V2423) (let G (hd V2423) (let V2424 (shen.lazyderef (tl V2423) V3056) (if (= () V2424) (do (shen.incinfs) (cut Throwcontrol V3056 (freeze (bind V3054 (cons where (cons (shen.lazyderef G V3056) (cons (shen.lazyderef Semantics V3056) ()))) V3056 V3057)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2410 V3056) Result))) false))) (if (= Case false) (let V2425 (shen.lazyderef V3053 V3056) (if (cons? V2425) (let X2397 (hd V2425) (let Syntax (tl V2425) (let V2426 (shen.lazyderef V3055 V3056) (if (cons? V2426) (let X (hd V2426) (let Rule (tl V2426) (do (shen.incinfs) (unify! X X2397 V3056 (freeze (shen.get-syntax+semantics Syntax V3054 Rule V3056 V3057)))))) false)))) (if (shen.pvar? V2425) (let X2397 (shen.newpv V3056) (let Syntax (shen.newpv V3056) (do (shen.bindv V2425 (cons X2397 Syntax) V3056) (let Result (let V2427 (shen.lazyderef V3055 V3056) (if (cons? V2427) (let X (hd V2427) (let Rule (tl V2427) (do (shen.incinfs) (unify! X X2397 V3056 (freeze (shen.get-syntax+semantics Syntax V3054 Rule V3056 V3057)))))) false)) (do (shen.unbindv V2425 V3056) Result))))) false))) Case)) Case)))))
162
158
 
163
- (defun shen.syntax-check (V3003 V3004 V3005 V3006 V3007) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2330 (shen.lazyderef V3003 V3006) (if (= () V2330) (do (shen.incinfs) (thaw V3007)) false)) (if (= Case false) (let Case (let V2331 (shen.lazyderef V3003 V3006) (if (cons? V2331) (let X (hd V2331) (let Syntax (tl V2331) (let C (shen.newpv V3006) (let X&& (shen.newpv V3006) (let B (shen.newpv V3006) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V3006)) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V3005 V3006 (freeze (cut Throwcontrol V3006 (freeze (bind X&& (concat && (shen.lazyderef X V3006)) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V3004 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V3005) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.syntax-check Syntax V3004 V3005 V3006 V3007))))))))))))))))))))))) false)) (if (= Case false) (let V2332 (shen.lazyderef V3003 V3006) (if (cons? V2332) (let X (hd V2332) (let Syntax (tl V2332) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V3004 ()))) V3005 V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.syntax-check Syntax V3004 V3005 V3006 V3007)))))))) false)) Case)) Case)))))
159
+ (defun shen.syntax-check (V3058 V3059 V3060 V3061 V3062) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2394 (shen.lazyderef V3058 V3061) (if (= () V2394) (do (shen.incinfs) (thaw V3062)) false)) (if (= Case false) (let Case (let V2395 (shen.lazyderef V3058 V3061) (if (cons? V2395) (let X (hd V2395) (let Syntax (tl V2395) (let C (shen.newpv V3061) (let X&& (shen.newpv V3061) (let B (shen.newpv V3061) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V3061)) V3061 (freeze (cut Throwcontrol V3061 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V3060 V3061 (freeze (cut Throwcontrol V3061 (freeze (bind X&& (concat && (shen.lazyderef X V3061)) V3061 (freeze (cut Throwcontrol V3061 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V3059 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V3060) V3061 (freeze (cut Throwcontrol V3061 (freeze (shen.syntax-check Syntax V3059 V3060 V3061 V3062))))))))))))))))))))))) false)) (if (= Case false) (let V2396 (shen.lazyderef V3058 V3061) (if (cons? V2396) (let X (hd V2396) (let Syntax (tl V2396) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V3059 ()))) V3060 V3061 (freeze (cut Throwcontrol V3061 (freeze (shen.syntax-check Syntax V3059 V3060 V3061 V3062)))))))) false)) Case)) Case)))))
164
160
 
165
- (defun shen.semantics-check (V3008 V3009 V3010 V3011 V3012) (let Semantics* (shen.newpv V3011) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V3008 V3011))) V3011 (freeze (shen.t* (cons Semantics* (cons : (cons V3009 ()))) V3010 V3011 V3012))))))
161
+ (defun shen.semantics-check (V3063 V3064 V3065 V3066 V3067) (let Semantics* (shen.newpv V3066) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V3063 V3066))) V3066 (freeze (shen.t* (cons Semantics* (cons : (cons V3064 ()))) V3065 V3066 V3067))))))
166
162
 
167
- (defun shen.rename-semantics (V3013) (cond ((cons? V3013) (cons (shen.rename-semantics (hd V3013)) (shen.rename-semantics (tl V3013)))) ((shen.grammar_symbol? V3013) (cons shen.<-sem (cons V3013 ()))) (true V3013)))
163
+ (defun shen.rename-semantics (V3068) (cond ((cons? V3068) (cons (shen.rename-semantics (hd V3068)) (shen.rename-semantics (tl V3068)))) ((shen.grammar_symbol? V3068) (cons shen.<-sem (cons V3068 ()))) (true V3068)))
168
164
 
169
165
 
170
166
 
@@ -51,40 +51,41 @@
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 (V2244) (set *version* V2244))
54
+ (defun version (V2308) (set *version* V2308))
55
55
 
56
- (version "version 9.1")
56
+ (version "version 11")
57
57
 
58
- (defun shen.credits () (do (pr "
58
+ (defun shen.credits () (do (shen.prhush "
59
59
  Shen 2010, copyright (C) 2010 Mark Tarver
60
- " (stoutput)) (do (pr (cn "www.shenlanguage.org, " (shen.app (value *version*) "
61
- " shen.a)) (stoutput)) (do (pr (cn "running under " (shen.app (value *language*) (cn ", implementation: " (shen.app (value *implementation*) "" shen.a)) shen.a)) (stoutput)) (pr (cn "
60
+ " (stoutput)) (do (shen.prhush "released under the Shen license
61
+ " (stoutput)) (do (shen.prhush (cn "www.shenlanguage.org, " (shen.app (value *version*) "
62
+ " shen.a)) (stoutput)) (do (shen.prhush (cn "running under " (shen.app (value *language*) (cn ", implementation: " (shen.app (value *implementation*) "" shen.a)) shen.a)) (stoutput)) (shen.prhush (cn "
62
63
  port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
63
- " shen.a)) shen.a)) (stoutput))))))
64
+ " shen.a)) shen.a)) (stoutput)))))))
64
65
 
65
66
  (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 ()))))))))))
66
67
 
67
- (defun shen.multiple-set (V2245) (cond ((= () V2245) ()) ((and (cons? V2245) (cons? (tl V2245))) (do (set (hd V2245) (hd (tl V2245))) (shen.multiple-set (tl (tl V2245))))) (true (shen.sys-error shen.multiple-set))))
68
+ (defun shen.multiple-set (V2309) (cond ((= () V2309) ()) ((and (cons? V2309) (cons? (tl V2309))) (do (set (hd V2309) (hd (tl V2309))) (shen.multiple-set (tl (tl V2309))))) (true (shen.sys-error shen.multiple-set))))
68
69
 
69
- (defun destroy (V2246) (declare V2246 ()))
70
+ (defun destroy (V2310) (declare V2310 ()))
70
71
 
71
72
  (set shen.*history* ())
72
73
 
73
74
  (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)))))))
74
75
 
75
- (defun shen.retrieve-from-history-if-needed (V2256 V2257) (cond ((and (tuple? V2256) (and (cons? (snd V2256)) (and (cons? (tl (snd V2256))) (and (= () (tl (tl (snd V2256)))) (and (cons? V2257) (and (= (hd (snd V2256)) (shen.exclamation)) (= (hd (tl (snd V2256))) (shen.exclamation)))))))) (let PastPrint (shen.prbytes (snd (hd V2257))) (hd V2257))) ((and (tuple? V2256) (and (cons? (snd V2256)) (= (hd (snd V2256)) (shen.exclamation)))) (let Key? (shen.make-key (tl (snd V2256)) V2257) (let Find (head (shen.find-past-inputs Key? V2257)) (let PastPrint (shen.prbytes (snd Find)) Find)))) ((and (tuple? V2256) (and (cons? (snd V2256)) (and (= () (tl (snd V2256))) (= (hd (snd V2256)) (shen.percent))))) (do (shen.print-past-inputs (lambda X true) (reverse V2257) 0) (abort))) ((and (tuple? V2256) (and (cons? (snd V2256)) (= (hd (snd V2256)) (shen.percent)))) (let Key? (shen.make-key (tl (snd V2256)) V2257) (let Pastprint (shen.print-past-inputs Key? (reverse V2257) 0) (abort)))) (true V2256)))
76
+ (defun shen.retrieve-from-history-if-needed (V2320 V2321) (cond ((and (tuple? V2320) (and (cons? (snd V2320)) (and (cons? (tl (snd V2320))) (and (= () (tl (tl (snd V2320)))) (and (cons? V2321) (and (= (hd (snd V2320)) (shen.exclamation)) (= (hd (tl (snd V2320))) (shen.exclamation)))))))) (let PastPrint (shen.prbytes (snd (hd V2321))) (hd V2321))) ((and (tuple? V2320) (and (cons? (snd V2320)) (= (hd (snd V2320)) (shen.exclamation)))) (let Key? (shen.make-key (tl (snd V2320)) V2321) (let Find (head (shen.find-past-inputs Key? V2321)) (let PastPrint (shen.prbytes (snd Find)) Find)))) ((and (tuple? V2320) (and (cons? (snd V2320)) (and (= () (tl (snd V2320))) (= (hd (snd V2320)) (shen.percent))))) (do (shen.print-past-inputs (lambda X true) (reverse V2321) 0) (abort))) ((and (tuple? V2320) (and (cons? (snd V2320)) (= (hd (snd V2320)) (shen.percent)))) (let Key? (shen.make-key (tl (snd V2320)) V2321) (let Pastprint (shen.print-past-inputs Key? (reverse V2321) 0) (abort)))) (true V2320)))
76
77
 
77
78
  (defun shen.percent () 37)
78
79
 
79
80
  (defun shen.exclamation () 33)
80
81
 
81
- (defun shen.prbytes (V2258) (do (map (lambda Byte (pr (n->string Byte) (stoutput))) V2258) (nl 1)))
82
+ (defun shen.prbytes (V2322) (do (map (lambda Byte (pr (n->string Byte) (stoutput))) V2322) (nl 1)))
82
83
 
83
- (defun shen.update_history (V2259 V2260) (set shen.*history* (cons V2259 V2260)))
84
+ (defun shen.update_history (V2323 V2324) (set shen.*history* (cons V2323 V2324)))
84
85
 
85
86
  (defun shen.toplineread () (shen.toplineread_loop (read-byte (stinput)) ()))
86
87
 
87
- (defun shen.toplineread_loop (V2262 V2263) (cond ((= V2262 (shen.hat)) (simple-error "line read aborted")) ((element? V2262 (cons (shen.newline) (cons (shen.carriage-return) ()))) (let Line (compile shen.<st_input> V2263 (lambda E shen.nextline)) (if (or (= Line shen.nextline) (empty? Line)) (shen.toplineread_loop (read-byte (stinput)) (append V2263 (cons V2262 ()))) (@p Line V2263)))) (true (shen.toplineread_loop (read-byte (stinput)) (append V2263 (cons V2262 ()))))))
88
+ (defun shen.toplineread_loop (V2326 V2327) (cond ((= V2326 (shen.hat)) (simple-error "line read aborted")) ((element? V2326 (cons (shen.newline) (cons (shen.carriage-return) ()))) (let Line (compile shen.<st_input> V2327 (lambda E shen.nextline)) (if (or (= Line shen.nextline) (empty? Line)) (shen.toplineread_loop (read-byte (stinput)) (append V2327 (cons V2326 ()))) (@p Line V2327)))) (true (shen.toplineread_loop (read-byte (stinput)) (append V2327 (cons V2326 ()))))))
88
89
 
89
90
  (defun shen.hat () 94)
90
91
 
@@ -92,24 +93,24 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
92
93
 
93
94
  (defun shen.carriage-return () 13)
94
95
 
95
- (defun tc (V2268) (cond ((= + V2268) (set shen.*tc* true)) ((= - V2268) (set shen.*tc* false)) (true (simple-error "tc expects a + or -"))))
96
+ (defun tc (V2332) (cond ((= + V2332) (set shen.*tc* true)) ((= - V2332) (set shen.*tc* false)) (true (simple-error "tc expects a + or -"))))
96
97
 
97
- (defun shen.prompt () (if (value shen.*tc*) (pr (cn "
98
+ (defun shen.prompt () (if (value shen.*tc*) (shen.prhush (cn "
98
99
 
99
- (" (shen.app (length (value shen.*history*)) "+) " shen.a)) (stoutput)) (pr (cn "
100
+ (" (shen.app (length (value shen.*history*)) "+) " shen.a)) (stoutput)) (shen.prhush (cn "
100
101
 
101
102
  (" (shen.app (length (value shen.*history*)) "-) " shen.a)) (stoutput))))
102
103
 
103
- (defun shen.toplevel (V2269) (shen.toplevel_evaluate V2269 (value shen.*tc*)))
104
+ (defun shen.toplevel (V2333) (shen.toplevel_evaluate V2333 (value shen.*tc*)))
104
105
 
105
- (defun shen.find-past-inputs (V2270 V2271) (let F (shen.find V2270 V2271) (if (empty? F) (simple-error "input not found
106
+ (defun shen.find-past-inputs (V2334 V2335) (let F (shen.find V2334 V2335) (if (empty? F) (simple-error "input not found
106
107
  ") F)))
107
108
 
108
- (defun shen.make-key (V2272 V2273) (let Atom (hd (compile shen.<st_input> V2272 (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
109
+ (defun shen.make-key (V2336 V2337) (let Atom (hd (compile shen.<st_input> V2336 (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
109
110
  " shen.s))) (simple-error "parse error
110
- "))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse V2273)))) (lambda X (shen.prefix? V2272 (shen.trim-gubbins (snd X)))))))
111
+ "))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse V2337)))) (lambda X (shen.prefix? V2336 (shen.trim-gubbins (snd X)))))))
111
112
 
112
- (defun shen.trim-gubbins (V2274) (cond ((and (cons? V2274) (= (hd V2274) (shen.space))) (shen.trim-gubbins (tl V2274))) ((and (cons? V2274) (= (hd V2274) (shen.newline))) (shen.trim-gubbins (tl V2274))) ((and (cons? V2274) (= (hd V2274) (shen.carriage-return))) (shen.trim-gubbins (tl V2274))) ((and (cons? V2274) (= (hd V2274) (shen.tab))) (shen.trim-gubbins (tl V2274))) ((and (cons? V2274) (= (hd V2274) (shen.left-round))) (shen.trim-gubbins (tl V2274))) (true V2274)))
113
+ (defun shen.trim-gubbins (V2338) (cond ((and (cons? V2338) (= (hd V2338) (shen.space))) (shen.trim-gubbins (tl V2338))) ((and (cons? V2338) (= (hd V2338) (shen.newline))) (shen.trim-gubbins (tl V2338))) ((and (cons? V2338) (= (hd V2338) (shen.carriage-return))) (shen.trim-gubbins (tl V2338))) ((and (cons? V2338) (= (hd V2338) (shen.tab))) (shen.trim-gubbins (tl V2338))) ((and (cons? V2338) (= (hd V2338) (shen.left-round))) (shen.trim-gubbins (tl V2338))) (true V2338)))
113
114
 
114
115
  (defun shen.space () 32)
115
116
 
@@ -117,22 +118,22 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
117
118
 
118
119
  (defun shen.left-round () 40)
119
120
 
120
- (defun shen.find (V2281 V2282) (cond ((= () V2282) ()) ((and (cons? V2282) (V2281 (hd V2282))) (cons (hd V2282) (shen.find V2281 (tl V2282)))) ((cons? V2282) (shen.find V2281 (tl V2282))) (true (shen.sys-error shen.find))))
121
+ (defun shen.find (V2345 V2346) (cond ((= () V2346) ()) ((and (cons? V2346) (V2345 (hd V2346))) (cons (hd V2346) (shen.find V2345 (tl V2346)))) ((cons? V2346) (shen.find V2345 (tl V2346))) (true (shen.sys-error shen.find))))
121
122
 
122
- (defun shen.prefix? (V2293 V2294) (cond ((= () V2293) true) ((and (cons? V2293) (and (cons? V2294) (= (hd V2294) (hd V2293)))) (shen.prefix? (tl V2293) (tl V2294))) (true false)))
123
+ (defun shen.prefix? (V2357 V2358) (cond ((= () V2357) true) ((and (cons? V2357) (and (cons? V2358) (= (hd V2358) (hd V2357)))) (shen.prefix? (tl V2357) (tl V2358))) (true false)))
123
124
 
124
- (defun shen.print-past-inputs (V2304 V2305 V2306) (cond ((= () V2305) _) ((and (cons? V2305) (not (V2304 (hd V2305)))) (shen.print-past-inputs V2304 (tl V2305) (+ V2306 1))) ((and (cons? V2305) (tuple? (hd V2305))) (do (pr (shen.app V2306 ". " shen.a) (stoutput)) (do (shen.prbytes (snd (hd V2305))) (shen.print-past-inputs V2304 (tl V2305) (+ V2306 1))))) (true (shen.sys-error shen.print-past-inputs))))
125
+ (defun shen.print-past-inputs (V2368 V2369 V2370) (cond ((= () V2369) _) ((and (cons? V2369) (not (V2368 (hd V2369)))) (shen.print-past-inputs V2368 (tl V2369) (+ V2370 1))) ((and (cons? V2369) (tuple? (hd V2369))) (do (shen.prhush (shen.app V2370 ". " shen.a) (stoutput)) (do (shen.prbytes (snd (hd V2369))) (shen.print-past-inputs V2368 (tl V2369) (+ V2370 1))))) (true (shen.sys-error shen.print-past-inputs))))
125
126
 
126
- (defun shen.toplevel_evaluate (V2307 V2308) (cond ((and (cons? V2307) (and (cons? (tl V2307)) (and (= : (hd (tl V2307))) (and (cons? (tl (tl V2307))) (and (= () (tl (tl (tl V2307)))) (= true V2308)))))) (shen.typecheck-and-evaluate (hd V2307) (hd (tl (tl V2307))))) ((and (cons? V2307) (cons? (tl V2307))) (do (shen.toplevel_evaluate (cons (hd V2307) ()) V2308) (do (nl 1) (shen.toplevel_evaluate (tl V2307) V2308)))) ((and (cons? V2307) (and (= () (tl V2307)) (= true V2308))) (shen.typecheck-and-evaluate (hd V2307) (gensym A))) ((and (cons? V2307) (and (= () (tl V2307)) (= false V2308))) (let Eval (shen.eval-without-macros (hd V2307)) (print Eval))) (true (shen.sys-error shen.toplevel_evaluate))))
127
+ (defun shen.toplevel_evaluate (V2371 V2372) (cond ((and (cons? V2371) (and (cons? (tl V2371)) (and (= : (hd (tl V2371))) (and (cons? (tl (tl V2371))) (and (= () (tl (tl (tl V2371)))) (= true V2372)))))) (shen.typecheck-and-evaluate (hd V2371) (hd (tl (tl V2371))))) ((and (cons? V2371) (cons? (tl V2371))) (do (shen.toplevel_evaluate (cons (hd V2371) ()) V2372) (do (nl 1) (shen.toplevel_evaluate (tl V2371) V2372)))) ((and (cons? V2371) (and (= () (tl V2371)) (= true V2372))) (shen.typecheck-and-evaluate (hd V2371) (gensym A))) ((and (cons? V2371) (and (= () (tl V2371)) (= false V2372))) (let Eval (shen.eval-without-macros (hd V2371)) (print Eval))) (true (shen.sys-error shen.toplevel_evaluate))))
127
128
 
128
- (defun shen.typecheck-and-evaluate (V2309 V2310) (let Typecheck (shen.typecheck V2309 V2310) (if (= Typecheck false) (simple-error "type error
129
- ") (let Eval (shen.eval-without-macros V2309) (let Type (shen.pretty-type Typecheck) (pr (shen.app Eval (cn " : " (shen.app Type "" shen.r)) shen.s) (stoutput)))))))
129
+ (defun shen.typecheck-and-evaluate (V2373 V2374) (let Typecheck (shen.typecheck V2373 V2374) (if (= Typecheck false) (simple-error "type error
130
+ ") (let Eval (shen.eval-without-macros V2373) (let Type (shen.pretty-type Typecheck) (shen.prhush (shen.app Eval (cn " : " (shen.app Type "" shen.r)) shen.s) (stoutput)))))))
130
131
 
131
- (defun shen.pretty-type (V2311) (shen.mult_subst (value shen.*alphabet*) (shen.extract-pvars V2311) V2311))
132
+ (defun shen.pretty-type (V2375) (shen.mult_subst (value shen.*alphabet*) (shen.extract-pvars V2375) V2375))
132
133
 
133
- (defun shen.extract-pvars (V2316) (cond ((shen.pvar? V2316) (cons V2316 ())) ((cons? V2316) (union (shen.extract-pvars (hd V2316)) (shen.extract-pvars (tl V2316)))) (true ())))
134
+ (defun shen.extract-pvars (V2380) (cond ((shen.pvar? V2380) (cons V2380 ())) ((cons? V2380) (union (shen.extract-pvars (hd V2380)) (shen.extract-pvars (tl V2380)))) (true ())))
134
135
 
135
- (defun shen.mult_subst (V2321 V2322 V2323) (cond ((= () V2321) V2323) ((= () V2322) V2323) ((and (cons? V2321) (cons? V2322)) (shen.mult_subst (tl V2321) (tl V2322) (subst (hd V2321) (hd V2322) V2323))) (true (shen.sys-error shen.mult_subst))))
136
+ (defun shen.mult_subst (V2385 V2386 V2387) (cond ((= () V2385) V2387) ((= () V2386) V2387) ((and (cons? V2385) (cons? V2386)) (shen.mult_subst (tl V2385) (tl V2386) (subst (hd V2385) (hd V2386) V2387))) (true (shen.sys-error shen.mult_subst))))
136
137
 
137
138
 
138
139
 
@@ -47,57 +47,57 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun shen.f_error (V2032) (do (pr (cn "partial function " (shen.app V2032 ";
51
- " shen.a)) (stoutput)) (do (if (and (not (shen.tracked? V2032)) (y-or-n? (cn "track " (shen.app V2032 "? " shen.a)))) (shen.track-function (ps V2032)) shen.ok) (simple-error "aborted"))))
50
+ "(defun shen.f_error (V2086) (do (shen.prhush (cn "partial function " (shen.app V2086 ";
51
+ " shen.a)) (stoutput)) (do (if (and (not (shen.tracked? V2086)) (y-or-n? (cn "track " (shen.app V2086 "? " shen.a)))) (shen.track-function (ps V2086)) shen.ok) (simple-error "aborted"))))
52
52
 
53
- (defun shen.tracked? (V2033) (element? V2033 (value shen.*tracking*)))
53
+ (defun shen.tracked? (V2087) (element? V2087 (value shen.*tracking*)))
54
54
 
55
- (defun track (V2034) (let Source (ps V2034) (shen.track-function Source)))
55
+ (defun track (V2088) (let Source (ps V2088) (shen.track-function Source)))
56
56
 
57
- (defun shen.track-function (V2035) (cond ((and (cons? V2035) (and (= defun (hd V2035)) (and (cons? (tl V2035)) (and (cons? (tl (tl V2035))) (and (cons? (tl (tl (tl V2035)))) (= () (tl (tl (tl (tl V2035)))))))))) (let KL (cons defun (cons (hd (tl V2035)) (cons (hd (tl (tl V2035))) (cons (shen.insert-tracking-code (hd (tl V2035)) (hd (tl (tl V2035))) (hd (tl (tl (tl V2035))))) ())))) (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 (V2089) (cond ((and (cons? V2089) (and (= defun (hd V2089)) (and (cons? (tl V2089)) (and (cons? (tl (tl V2089))) (and (cons? (tl (tl (tl V2089)))) (= () (tl (tl (tl (tl V2089)))))))))) (let KL (cons defun (cons (hd (tl V2089)) (cons (hd (tl (tl V2089))) (cons (shen.insert-tracking-code (hd (tl V2089)) (hd (tl (tl V2089))) (hd (tl (tl (tl V2089))))) ())))) (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 (V2036 V2037 V2038) (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 V2036 (cons (shen.cons_form V2037) ())))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons (cons let (cons Result (cons V2038 (cons (cons do (cons (cons shen.output-track (cons (cons value (cons shen.*call* ())) (cons V2036 (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 (V2090 V2091 V2092) (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 V2090 (cons (shen.cons_form V2091) ())))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons (cons let (cons Result (cons V2092 (cons (cons do (cons (cons shen.output-track (cons (cons value (cons shen.*call* ())) (cons V2090 (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 (V2043) (cond ((= + V2043) (set shen.*step* true)) ((= - V2043) (set shen.*step* false)) (true (simple-error "step expects a + or a -.
63
+ (defun step (V2097) (cond ((= + V2097) (set shen.*step* true)) ((= - V2097) (set shen.*step* false)) (true (simple-error "step expects a + or a -.
64
64
  "))))
65
65
 
66
- (defun spy (V2048) (cond ((= + V2048) (set shen.*spy* true)) ((= - V2048) (set shen.*spy* false)) (true (simple-error "spy expects a + or a -.
66
+ (defun spy (V2102) (cond ((= + V2102) (set shen.*spy* true)) ((= - V2102) (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 (V2053) (cond ((= V2053 (shen.hat)) (simple-error "aborted")) (true true)))
71
+ (defun shen.check-byte (V2107) (cond ((= V2107 (shen.hat)) (simple-error "aborted")) (true true)))
72
72
 
73
- (defun shen.input-track (V2054 V2055 V2056) (do (pr (cn "
74
- " (shen.app (shen.spaces V2054) (cn "<" (shen.app V2054 (cn "> Inputs to " (shen.app V2055 (cn "
75
- " (shen.app (shen.spaces V2054) "" shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)) (shen.recursively-print V2056)))
73
+ (defun shen.input-track (V2108 V2109 V2110) (do (shen.prhush (cn "
74
+ " (shen.app (shen.spaces V2108) (cn "<" (shen.app V2108 (cn "> Inputs to " (shen.app V2109 (cn "
75
+ " (shen.app (shen.spaces V2108) "" shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)) (shen.recursively-print V2110)))
76
76
 
77
- (defun shen.recursively-print (V2057) (cond ((= () V2057) (pr " ==>" (stoutput))) ((cons? V2057) (do (print (hd V2057)) (do (pr ", " (stoutput)) (shen.recursively-print (tl V2057))))) (true (shen.sys-error shen.recursively-print))))
77
+ (defun shen.recursively-print (V2111) (cond ((= () V2111) (shen.prhush " ==>" (stoutput))) ((cons? V2111) (do (print (hd V2111)) (do (shen.prhush ", " (stoutput)) (shen.recursively-print (tl V2111))))) (true (shen.sys-error shen.recursively-print))))
78
78
 
79
- (defun shen.spaces (V2058) (cond ((= 0 V2058) "") (true (cn " " (shen.spaces (- V2058 1))))))
79
+ (defun shen.spaces (V2112) (cond ((= 0 V2112) "") (true (cn " " (shen.spaces (- V2112 1))))))
80
80
 
81
- (defun shen.output-track (V2059 V2060 V2061) (pr (cn "
82
- " (shen.app (shen.spaces V2059) (cn "<" (shen.app V2059 (cn "> Output from " (shen.app V2060 (cn "
83
- " (shen.app (shen.spaces V2059) (cn "==> " (shen.app V2061 "" shen.s)) shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)))
81
+ (defun shen.output-track (V2113 V2114 V2115) (shen.prhush (cn "
82
+ " (shen.app (shen.spaces V2113) (cn "<" (shen.app V2113 (cn "> Output from " (shen.app V2114 (cn "
83
+ " (shen.app (shen.spaces V2113) (cn "==> " (shen.app V2115 "" shen.s)) shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)))
84
84
 
85
- (defun untrack (V2062) (eval (ps V2062)))
85
+ (defun untrack (V2116) (eval (ps V2116)))
86
86
 
87
- (defun profile (V2063) (shen.profile-help (ps V2063)))
87
+ (defun profile (V2117) (shen.profile-help (ps V2117)))
88
88
 
89
- (defun shen.profile-help (V2068) (cond ((and (cons? V2068) (and (= defun (hd V2068)) (and (cons? (tl V2068)) (and (cons? (tl (tl V2068))) (and (cons? (tl (tl (tl V2068)))) (= () (tl (tl (tl (tl V2068)))))))))) (let G (gensym shen.f) (let Profile (cons defun (cons (hd (tl V2068)) (cons (hd (tl (tl V2068))) (cons (shen.profile-func (hd (tl V2068)) (hd (tl (tl V2068))) (cons G (hd (tl (tl V2068))))) ())))) (let Def (cons defun (cons G (cons (hd (tl (tl V2068))) (cons (subst G (hd (tl V2068)) (hd (tl (tl (tl V2068))))) ())))) (let CompileProfile (shen.eval-without-macros Profile) (let CompileG (shen.eval-without-macros Def) (hd (tl V2068)))))))) (true (simple-error "Cannot profile.
89
+ (defun shen.profile-help (V2122) (cond ((and (cons? V2122) (and (= defun (hd V2122)) (and (cons? (tl V2122)) (and (cons? (tl (tl V2122))) (and (cons? (tl (tl (tl V2122)))) (= () (tl (tl (tl (tl V2122)))))))))) (let G (gensym shen.f) (let Profile (cons defun (cons (hd (tl V2122)) (cons (hd (tl (tl V2122))) (cons (shen.profile-func (hd (tl V2122)) (hd (tl (tl V2122))) (cons G (hd (tl (tl V2122))))) ())))) (let Def (cons defun (cons G (cons (hd (tl (tl V2122))) (cons (subst G (hd (tl V2122)) (hd (tl (tl (tl V2122))))) ())))) (let CompileProfile (shen.eval-without-macros Profile) (let CompileG (shen.eval-without-macros Def) (hd (tl V2122)))))))) (true (simple-error "Cannot profile.
90
90
  "))))
91
91
 
92
- (defun unprofile (V2069) (untrack V2069))
92
+ (defun unprofile (V2123) (untrack V2123))
93
93
 
94
- (defun shen.profile-func (V2070 V2071 V2072) (cons let (cons Start (cons (cons get-time (cons run ())) (cons (cons let (cons Result (cons V2072 (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 V2070 (cons (cons + (cons (cons shen.get-profile (cons V2070 ())) (cons Finish ()))) ()))) (cons Result ())))) ())))) ())))) ())))))
94
+ (defun shen.profile-func (V2124 V2125 V2126) (cons let (cons Start (cons (cons get-time (cons run ())) (cons (cons let (cons Result (cons V2126 (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 V2124 (cons (cons + (cons (cons shen.get-profile (cons V2124 ())) (cons Finish ()))) ()))) (cons Result ())))) ())))) ())))) ())))))
95
95
 
96
- (defun profile-results (V2073) (let Results (shen.get-profile V2073) (let Initialise (shen.put-profile V2073 0) (@p V2073 Results))))
96
+ (defun profile-results (V2127) (let Results (shen.get-profile V2127) (let Initialise (shen.put-profile V2127 0) (@p V2127 Results))))
97
97
 
98
- (defun shen.get-profile (V2074) (trap-error (get V2074 profile (value *property-vector*)) (lambda E 0)))
98
+ (defun shen.get-profile (V2128) (trap-error (get V2128 profile (value *property-vector*)) (lambda E 0)))
99
99
 
100
- (defun shen.put-profile (V2075 V2076) (put V2075 profile V2076 (value *property-vector*)))
100
+ (defun shen.put-profile (V2129 V2130) (put V2129 profile V2130 (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 (V2077 V2078) (let Record (set shen.*signedfuncs* (adjoin V2077 (value shen.*signedfuncs*))) (let Variancy (trap-error (shen.variancy-test V2077 V2078) (lambda E shen.skip)) (let Type (shen.rcons_form (shen.demodulate V2078)) (let F* (concat shen.type-signature-of- V2077) (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) V2077)))))))))))
50
+ "(defun declare (V2131 V2132) (let Record (set shen.*signedfuncs* (cons (cons V2131 V2132) (value shen.*signedfuncs*))) (let Variancy (trap-error (shen.variancy-test V2131 V2132) (lambda E shen.skip)) (let Type (shen.rcons_form (shen.demodulate V2132)) (let F* (concat shen.type-signature-of- V2131) (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) V2131)))))))))))
51
51
 
52
- (defun shen.demodulate (V2079) (fix shen.demodh V2079))
52
+ (defun shen.demodulate (V2133) (fix shen.demodh V2133))
53
53
 
54
- (defun shen.demodh (V2080) (cond ((cons? V2080) (map shen.demodh V2080)) (true (shen.demod-atom V2080))))
54
+ (defun shen.demodh (V2134) (cond ((cons? V2134) (map shen.demodh V2134)) (true (shen.demod-atom V2134))))
55
55
 
56
- (defun shen.demod-atom (V2081) (let Val (assoc V2081 (value shen.*synonyms*)) (if (empty? Val) V2081 (tl Val))))
56
+ (defun shen.demod-atom (V2135) (let Val (assoc V2135 (value shen.*synonyms*)) (if (empty? Val) V2135 (tl Val))))
57
57
 
58
- (defun shen.variancy-test (V2082 V2083) (let TypeF (shen.typecheck V2082 B) (let Check (if (= symbol TypeF) shen.skip (if (shen.variant? TypeF V2083) shen.skip (pr (cn "warning: changing the type of " (shen.app V2082 " may create errors
58
+ (defun shen.variancy-test (V2136 V2137) (let TypeF (shen.typecheck V2136 B) (let Check (if (= symbol TypeF) shen.skip (if (shen.variant? TypeF V2137) shen.skip (shen.prhush (cn "warning: changing the type of " (shen.app V2136 " may create errors
59
59
  " shen.a)) (stoutput)))) shen.skip)))
60
60
 
61
- (defun shen.variant? (V2092 V2093) (cond ((= V2093 V2092) true) ((and (cons? V2092) (and (cons? V2093) (= (hd V2093) (hd V2092)))) (shen.variant? (tl V2092) (tl V2093))) ((and (cons? V2092) (and (cons? V2093) (and (shen.pvar? (hd V2092)) (variable? (hd V2093))))) (shen.variant? (subst shen.a (hd V2092) (tl V2092)) (subst shen.a (hd V2093) (tl V2093)))) ((and (cons? V2092) (and (cons? (hd V2092)) (and (cons? V2093) (cons? (hd V2093))))) (shen.variant? (append (hd V2092) (tl V2092)) (append (hd V2093) (tl V2093)))) (true false)))
61
+ (defun shen.variant? (V2146 V2147) (cond ((= V2147 V2146) true) ((and (cons? V2146) (and (cons? V2147) (= (hd V2147) (hd V2146)))) (shen.variant? (tl V2146) (tl V2147))) ((and (cons? V2146) (and (cons? V2147) (and (shen.pvar? (hd V2146)) (variable? (hd V2147))))) (shen.variant? (subst shen.a (hd V2146) (tl V2146)) (subst shen.a (hd V2147) (tl V2147)))) ((and (cons? V2146) (and (cons? (hd V2146)) (and (cons? V2147) (cons? (hd V2147))))) (shen.variant? (append (hd V2146) (tl V2146)) (append (hd V2147) (tl V2147)))) (true false)))
62
62
 
63
63
  (declare absvector? (cons A (cons --> (cons boolean ()))))
64
64
 
@@ -178,6 +178,8 @@
178
178
 
179
179
  (declare occurs-check (cons symbol (cons --> (cons boolean ()))))
180
180
 
181
+ (declare optimise (cons symbol (cons --> (cons boolean ()))))
182
+
181
183
  (declare or (cons boolean (cons --> (cons (cons boolean (cons --> (cons boolean ()))) ()))))
182
184
 
183
185
  (declare pos (cons string (cons --> (cons (cons number (cons --> (cons string ()))) ()))))
@@ -198,6 +200,8 @@
198
200
 
199
201
  (declare preclude-all-but (cons (cons list (cons symbol ())) (cons --> (cons (cons list (cons symbol ())) ()))))
200
202
 
203
+ (declare shen.prhush (cons string (cons --> (cons (cons (cons stream (cons out ())) (cons --> (cons string ()))) ()))))
204
+
201
205
  (declare ps (cons symbol (cons --> (cons (cons list (cons unit ())) ()))))
202
206
 
203
207
  (declare read-byte (cons (cons stream (cons in ())) (cons --> (cons number ()))))
@@ -47,49 +47,53 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun print (V2179) (let String (shen.insert V2179 "~S") (let Print (pr String (stoutput)) V2179)))
50
+ "(defun print (V2238) (let String (shen.insert V2238 "~S") (let Print (shen.prhush String (stoutput)) V2238)))
51
51
 
52
- (defun shen.mkstr (V2180 V2181) (cond ((string? V2180) (shen.mkstr-l (shen.proc-nl V2180) V2181)) (true (shen.mkstr-r (cons shen.proc-nl (cons V2180 ())) V2181))))
52
+ (defun shen.prhush (V2239 V2240) (if (value *hush*) V2239 (pr V2239 V2240)))
53
53
 
54
- (defun shen.mkstr-l (V2182 V2183) (cond ((= () V2183) V2182) ((cons? V2183) (shen.mkstr-l (shen.insert-l (hd V2183) V2182) (tl V2183))) (true (shen.sys-error shen.mkstr-l))))
54
+ (defun shen.mkstr (V2241 V2242) (cond ((string? V2241) (shen.mkstr-l (shen.proc-nl V2241) V2242)) (true (shen.mkstr-r (cons shen.proc-nl (cons V2241 ())) V2242))))
55
55
 
56
- (defun shen.insert-l (V2186 V2187) (cond ((= "" V2187) "") ((and (shen.+string? V2187) (and (= "~" (pos V2187 0)) (and (shen.+string? (tlstr V2187)) (= "A" (pos (tlstr V2187) 0))))) (cons shen.app (cons V2186 (cons (tlstr (tlstr V2187)) (cons shen.a ()))))) ((and (shen.+string? V2187) (and (= "~" (pos V2187 0)) (and (shen.+string? (tlstr V2187)) (= "R" (pos (tlstr V2187) 0))))) (cons shen.app (cons V2186 (cons (tlstr (tlstr V2187)) (cons shen.r ()))))) ((and (shen.+string? V2187) (and (= "~" (pos V2187 0)) (and (shen.+string? (tlstr V2187)) (= "S" (pos (tlstr V2187) 0))))) (cons shen.app (cons V2186 (cons (tlstr (tlstr V2187)) (cons shen.s ()))))) ((shen.+string? V2187) (shen.factor-cn (cons cn (cons (pos V2187 0) (cons (shen.insert-l V2186 (tlstr V2187)) ()))))) ((and (cons? V2187) (and (= cn (hd V2187)) (and (cons? (tl V2187)) (and (cons? (tl (tl V2187))) (= () (tl (tl (tl V2187)))))))) (cons cn (cons (hd (tl V2187)) (cons (shen.insert-l V2186 (hd (tl (tl V2187)))) ())))) ((and (cons? V2187) (and (= shen.app (hd V2187)) (and (cons? (tl V2187)) (and (cons? (tl (tl V2187))) (and (cons? (tl (tl (tl V2187)))) (= () (tl (tl (tl (tl V2187)))))))))) (cons shen.app (cons (hd (tl V2187)) (cons (shen.insert-l V2186 (hd (tl (tl V2187)))) (tl (tl (tl V2187))))))) (true (shen.sys-error shen.insert-l))))
56
+ (defun shen.mkstr-l (V2243 V2244) (cond ((= () V2244) V2243) ((cons? V2244) (shen.mkstr-l (shen.insert-l (hd V2244) V2243) (tl V2244))) (true (shen.sys-error shen.mkstr-l))))
57
57
 
58
- (defun shen.factor-cn (V2188) (cond ((and (cons? V2188) (and (= cn (hd V2188)) (and (cons? (tl V2188)) (and (cons? (tl (tl V2188))) (and (cons? (hd (tl (tl V2188)))) (and (= cn (hd (hd (tl (tl V2188))))) (and (cons? (tl (hd (tl (tl V2188))))) (and (cons? (tl (tl (hd (tl (tl V2188)))))) (and (= () (tl (tl (tl (hd (tl (tl V2188))))))) (and (= () (tl (tl (tl V2188)))) (and (string? (hd (tl V2188))) (string? (hd (tl (hd (tl (tl V2188))))))))))))))))) (cons cn (cons (cn (hd (tl V2188)) (hd (tl (hd (tl (tl V2188)))))) (tl (tl (hd (tl (tl V2188)))))))) (true V2188)))
58
+ (defun shen.insert-l (V2247 V2248) (cond ((= "" V2248) "") ((and (shen.+string? V2248) (and (= "~" (pos V2248 0)) (and (shen.+string? (tlstr V2248)) (= "A" (pos (tlstr V2248) 0))))) (cons shen.app (cons V2247 (cons (tlstr (tlstr V2248)) (cons shen.a ()))))) ((and (shen.+string? V2248) (and (= "~" (pos V2248 0)) (and (shen.+string? (tlstr V2248)) (= "R" (pos (tlstr V2248) 0))))) (cons shen.app (cons V2247 (cons (tlstr (tlstr V2248)) (cons shen.r ()))))) ((and (shen.+string? V2248) (and (= "~" (pos V2248 0)) (and (shen.+string? (tlstr V2248)) (= "S" (pos (tlstr V2248) 0))))) (cons shen.app (cons V2247 (cons (tlstr (tlstr V2248)) (cons shen.s ()))))) ((shen.+string? V2248) (shen.factor-cn (cons cn (cons (pos V2248 0) (cons (shen.insert-l V2247 (tlstr V2248)) ()))))) ((and (cons? V2248) (and (= cn (hd V2248)) (and (cons? (tl V2248)) (and (cons? (tl (tl V2248))) (= () (tl (tl (tl V2248)))))))) (cons cn (cons (hd (tl V2248)) (cons (shen.insert-l V2247 (hd (tl (tl V2248)))) ())))) ((and (cons? V2248) (and (= shen.app (hd V2248)) (and (cons? (tl V2248)) (and (cons? (tl (tl V2248))) (and (cons? (tl (tl (tl V2248)))) (= () (tl (tl (tl (tl V2248)))))))))) (cons shen.app (cons (hd (tl V2248)) (cons (shen.insert-l V2247 (hd (tl (tl V2248)))) (tl (tl (tl V2248))))))) (true (shen.sys-error shen.insert-l))))
59
59
 
60
- (defun shen.proc-nl (V2189) (cond ((= "" V2189) "") ((and (shen.+string? V2189) (and (= "~" (pos V2189 0)) (and (shen.+string? (tlstr V2189)) (= "%" (pos (tlstr V2189) 0))))) (cn (n->string 10) (shen.proc-nl (tlstr (tlstr V2189))))) ((shen.+string? V2189) (cn (pos V2189 0) (shen.proc-nl (tlstr V2189)))) (true (shen.sys-error shen.proc-nl))))
60
+ (defun shen.factor-cn (V2249) (cond ((and (cons? V2249) (and (= cn (hd V2249)) (and (cons? (tl V2249)) (and (cons? (tl (tl V2249))) (and (cons? (hd (tl (tl V2249)))) (and (= cn (hd (hd (tl (tl V2249))))) (and (cons? (tl (hd (tl (tl V2249))))) (and (cons? (tl (tl (hd (tl (tl V2249)))))) (and (= () (tl (tl (tl (hd (tl (tl V2249))))))) (and (= () (tl (tl (tl V2249)))) (and (string? (hd (tl V2249))) (string? (hd (tl (hd (tl (tl V2249))))))))))))))))) (cons cn (cons (cn (hd (tl V2249)) (hd (tl (hd (tl (tl V2249)))))) (tl (tl (hd (tl (tl V2249)))))))) (true V2249)))
61
61
 
62
- (defun shen.mkstr-r (V2190 V2191) (cond ((= () V2191) V2190) ((cons? V2191) (shen.mkstr-r (cons shen.insert (cons (hd V2191) (cons V2190 ()))) (tl V2191))) (true (shen.sys-error shen.mkstr-r))))
62
+ (defun shen.proc-nl (V2250) (cond ((= "" V2250) "") ((and (shen.+string? V2250) (and (= "~" (pos V2250 0)) (and (shen.+string? (tlstr V2250)) (= "%" (pos (tlstr V2250) 0))))) (cn (n->string 10) (shen.proc-nl (tlstr (tlstr V2250))))) ((shen.+string? V2250) (cn (pos V2250 0) (shen.proc-nl (tlstr V2250)))) (true (shen.sys-error shen.proc-nl))))
63
63
 
64
- (defun shen.insert (V2194 V2195) (cond ((= "" V2195) "") ((and (shen.+string? V2195) (and (= "~" (pos V2195 0)) (and (shen.+string? (tlstr V2195)) (= "A" (pos (tlstr V2195) 0))))) (shen.app V2194 (tlstr (tlstr V2195)) shen.a)) ((and (shen.+string? V2195) (and (= "~" (pos V2195 0)) (and (shen.+string? (tlstr V2195)) (= "R" (pos (tlstr V2195) 0))))) (shen.app V2194 (tlstr (tlstr V2195)) shen.r)) ((and (shen.+string? V2195) (and (= "~" (pos V2195 0)) (and (shen.+string? (tlstr V2195)) (= "S" (pos (tlstr V2195) 0))))) (shen.app V2194 (tlstr (tlstr V2195)) shen.s)) ((shen.+string? V2195) (cn (pos V2195 0) (shen.insert V2194 (tlstr V2195)))) (true (shen.sys-error shen.insert))))
64
+ (defun shen.mkstr-r (V2251 V2252) (cond ((= () V2252) V2251) ((cons? V2252) (shen.mkstr-r (cons shen.insert (cons (hd V2252) (cons V2251 ()))) (tl V2252))) (true (shen.sys-error shen.mkstr-r))))
65
65
 
66
- (defun shen.app (V2196 V2197 V2198) (cn (shen.arg->str V2196 V2198) V2197))
66
+ (defun shen.insert (V2253 V2254) (shen.insert-h V2253 V2254 ""))
67
67
 
68
- (defun shen.arg->str (V2204 V2205) (cond ((= V2204 (fail)) "...") ((shen.list? V2204) (shen.list->str V2204 V2205)) ((string? V2204) (shen.str->str V2204 V2205)) ((absvector? V2204) (shen.vector->str V2204 V2205)) (true (shen.atom->str V2204))))
68
+ (defun shen.insert-h (V2257 V2258 V2259) (cond ((= "" V2258) V2259) ((and (shen.+string? V2258) (and (= "~" (pos V2258 0)) (and (shen.+string? (tlstr V2258)) (= "A" (pos (tlstr V2258) 0))))) (cn V2259 (shen.app V2257 (tlstr (tlstr V2258)) shen.a))) ((and (shen.+string? V2258) (and (= "~" (pos V2258 0)) (and (shen.+string? (tlstr V2258)) (= "R" (pos (tlstr V2258) 0))))) (cn V2259 (shen.app V2257 (tlstr (tlstr V2258)) shen.r))) ((and (shen.+string? V2258) (and (= "~" (pos V2258 0)) (and (shen.+string? (tlstr V2258)) (= "S" (pos (tlstr V2258) 0))))) (cn V2259 (shen.app V2257 (tlstr (tlstr V2258)) shen.s))) ((shen.+string? V2258) (shen.insert-h V2257 (tlstr V2258) (cn V2259 (pos V2258 0)))) (true (shen.sys-error shen.insert-h))))
69
69
 
70
- (defun shen.list->str (V2206 V2207) (cond ((= shen.r V2207) (@s "(" (@s (shen.iter-list V2206 shen.r (shen.maxseq)) ")"))) (true (@s "[" (@s (shen.iter-list V2206 V2207 (shen.maxseq)) "]")))))
70
+ (defun shen.app (V2260 V2261 V2262) (cn (shen.arg->str V2260 V2262) V2261))
71
+
72
+ (defun shen.arg->str (V2268 V2269) (cond ((= V2268 (fail)) "...") ((shen.list? V2268) (shen.list->str V2268 V2269)) ((string? V2268) (shen.str->str V2268 V2269)) ((absvector? V2268) (shen.vector->str V2268 V2269)) (true (shen.atom->str V2268))))
73
+
74
+ (defun shen.list->str (V2270 V2271) (cond ((= shen.r V2271) (@s "(" (@s (shen.iter-list V2270 shen.r (shen.maxseq)) ")"))) (true (@s "[" (@s (shen.iter-list V2270 V2271 (shen.maxseq)) "]")))))
71
75
 
72
76
  (defun shen.maxseq () (value *maximum-print-sequence-size*))
73
77
 
74
- (defun shen.iter-list (V2218 V2219 V2220) (cond ((= () V2218) "") ((= 0 V2220) "... etc") ((and (cons? V2218) (= () (tl V2218))) (shen.arg->str (hd V2218) V2219)) ((cons? V2218) (@s (shen.arg->str (hd V2218) V2219) (@s " " (shen.iter-list (tl V2218) V2219 (- V2220 1))))) (true (@s " " (@s "|" (@s " " (shen.arg->str V2218 V2219)))))))
78
+ (defun shen.iter-list (V2282 V2283 V2284) (cond ((= () V2282) "") ((= 0 V2284) "... etc") ((and (cons? V2282) (= () (tl V2282))) (shen.arg->str (hd V2282) V2283)) ((cons? V2282) (@s (shen.arg->str (hd V2282) V2283) (@s " " (shen.iter-list (tl V2282) V2283 (- V2284 1))))) (true (@s "|" (@s " " (shen.arg->str V2282 V2283))))))
75
79
 
76
- (defun shen.str->str (V2225 V2226) (cond ((= shen.a V2226) V2225) (true (@s (n->string 34) (@s V2225 (n->string 34))))))
80
+ (defun shen.str->str (V2289 V2290) (cond ((= shen.a V2290) V2289) (true (@s (n->string 34) (@s V2289 (n->string 34))))))
77
81
 
78
- (defun shen.vector->str (V2227 V2228) (if (shen.print-vector? V2227) ((<-address V2227 0) V2227) (if (vector? V2227) (@s "<" (@s (shen.iter-vector V2227 1 V2228 (shen.maxseq)) ">")) (@s "<" (@s "<" (@s (shen.iter-vector V2227 0 V2228 (shen.maxseq)) ">>"))))))
82
+ (defun shen.vector->str (V2291 V2292) (if (shen.print-vector? V2291) ((<-address V2291 0) V2291) (if (vector? V2291) (@s "<" (@s (shen.iter-vector V2291 1 V2292 (shen.maxseq)) ">")) (@s "<" (@s "<" (@s (shen.iter-vector V2291 0 V2292 (shen.maxseq)) ">>"))))))
79
83
 
80
- (defun shen.print-vector? (V2229) (let Zero (<-address V2229 0) (if (= Zero shen.tuple) true (if (= Zero shen.pvar) true (if (not (number? Zero)) (shen.fbound? Zero) false)))))
84
+ (defun shen.print-vector? (V2293) (let Zero (<-address V2293 0) (if (= Zero shen.tuple) true (if (= Zero shen.pvar) true (if (not (number? Zero)) (shen.fbound? Zero) false)))))
81
85
 
82
- (defun shen.fbound? (V2230) (trap-error (do (ps V2230) true) (lambda E false)))
86
+ (defun shen.fbound? (V2294) (trap-error (do (ps V2294) true) (lambda E false)))
83
87
 
84
- (defun shen.tuple (V2231) (cn "(@p " (shen.app (<-address V2231 1) (cn " " (shen.app (<-address V2231 2) ")" shen.s)) shen.s)))
88
+ (defun shen.tuple (V2295) (cn "(@p " (shen.app (<-address V2295 1) (cn " " (shen.app (<-address V2295 2) ")" shen.s)) shen.s)))
85
89
 
86
- (defun shen.iter-vector (V2238 V2239 V2240 V2241) (cond ((= 0 V2241) "... etc") (true (let Item (trap-error (<-address V2238 V2239) (lambda E shen.out-of-bounds)) (let Next (trap-error (<-address V2238 (+ V2239 1)) (lambda E shen.out-of-bounds)) (if (= Item shen.out-of-bounds) "" (if (= Next shen.out-of-bounds) (shen.arg->str Item V2240) (@s (shen.arg->str Item V2240) (@s " " (shen.iter-vector V2238 (+ V2239 1) V2240 (- V2241 1)))))))))))
90
+ (defun shen.iter-vector (V2302 V2303 V2304 V2305) (cond ((= 0 V2305) "... etc") (true (let Item (trap-error (<-address V2302 V2303) (lambda E shen.out-of-bounds)) (let Next (trap-error (<-address V2302 (+ V2303 1)) (lambda E shen.out-of-bounds)) (if (= Item shen.out-of-bounds) "" (if (= Next shen.out-of-bounds) (shen.arg->str Item V2304) (@s (shen.arg->str Item V2304) (@s " " (shen.iter-vector V2302 (+ V2303 1) V2304 (- V2305 1)))))))))))
87
91
 
88
- (defun shen.atom->str (V2242) (trap-error (str V2242) (lambda E (shen.funexstring))))
92
+ (defun shen.atom->str (V2306) (trap-error (str V2306) (lambda E (shen.funexstring))))
89
93
 
90
94
  (defun shen.funexstring () (@s "" (@s "f" (@s "u" (@s "n" (@s "e" (@s (shen.arg->str (gensym (intern "x")) shen.a) "")))))))
91
95
 
92
- (defun shen.list? (V2243) (or (empty? V2243) (cons? V2243)))
96
+ (defun shen.list? (V2307) (or (empty? V2307) (cons? V2307)))
93
97
 
94
98
 
95
99