shen-ruby 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.md +8 -0
- data/README.md +7 -7
- data/k_lambda_spec/primitives/boolean_operations_spec.rb +1 -1
- data/lib/kl/compiler.rb +10 -5
- data/lib/kl/primitives/booleans.rb +4 -0
- data/lib/shen_ruby/version.rb +1 -1
- data/shen-ruby.gemspec +1 -1
- data/shen/release/k_lambda/declarations.kl +3 -3
- data/shen/release/k_lambda/macros.kl +43 -37
- data/shen/release/k_lambda/prolog.kl +97 -97
- data/shen/release/k_lambda/reader.kl +67 -67
- data/shen/release/k_lambda/sequent.kl +53 -53
- data/shen/release/k_lambda/sys.kl +106 -104
- data/shen/release/k_lambda/t-star.kl +50 -50
- data/shen/release/k_lambda/toplevel.kl +23 -23
- data/shen/release/k_lambda/track.kl +25 -25
- data/shen/release/k_lambda/types.kl +9 -7
- data/shen/release/k_lambda/writer.kl +22 -22
- data/shen/release/k_lambda/yacc.kl +32 -28
- metadata +3 -3
@@ -47,120 +47,120 @@
|
|
47
47
|
* explains this license in full. *
|
48
48
|
* *
|
49
49
|
*****************************************************************************************
|
50
|
-
"(defun shen.typecheck (
|
50
|
+
"(defun shen.typecheck (V2823 V2824) (let Curry (shen.curry V2823) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2824)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
|
51
51
|
|
52
|
-
(defun shen.curry (
|
52
|
+
(defun shen.curry (V2825) (cond ((and (cons? V2825) (shen.special? (hd V2825))) (cons (hd V2825) (map shen.curry (tl V2825)))) ((and (cons? V2825) (and (cons? (tl V2825)) (shen.extraspecial? (hd V2825)))) V2825) ((and (cons? V2825) (and (cons? (tl V2825)) (cons? (tl (tl V2825))))) (shen.curry (cons (cons (hd V2825) (cons (hd (tl V2825)) ())) (tl (tl V2825))))) ((and (cons? V2825) (and (cons? (tl V2825)) (= () (tl (tl V2825))))) (cons (shen.curry (hd V2825)) (cons (shen.curry (hd (tl V2825))) ()))) (true V2825)))
|
53
53
|
|
54
|
-
(defun shen.special? (
|
54
|
+
(defun shen.special? (V2826) (element? V2826 (value shen.*special*)))
|
55
55
|
|
56
|
-
(defun shen.extraspecial? (
|
56
|
+
(defun shen.extraspecial? (V2827) (element? V2827 (value shen.*extraspecial*)))
|
57
57
|
|
58
|
-
(defun shen.t* (
|
58
|
+
(defun shen.t* (V2828 V2829 V2830 V2831) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2830) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2830 (freeze (bind Error (shen.errormaxinfs) V2830 V2831))))) (if (= Case false) (let Case (let V2817 (shen.lazyderef V2828 V2830) (if (= fail V2817) (do (shen.incinfs) (cut Throwcontrol V2830 (freeze (shen.prolog-failure V2830 V2831)))) false)) (if (= Case false) (let Case (let V2818 (shen.lazyderef V2828 V2830) (if (cons? V2818) (let X (hd V2818) (let V2819 (shen.lazyderef (tl V2818) V2830) (if (cons? V2819) (let V2820 (shen.lazyderef (hd V2819) V2830) (if (= : V2820) (let V2821 (shen.lazyderef (tl V2819) V2830) (if (cons? V2821) (let A (hd V2821) (let V2822 (shen.lazyderef (tl V2821) V2830) (if (= () V2822) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2830 (freeze (cut Throwcontrol V2830 (freeze (shen.th* X A V2829 V2830 V2831)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2830) (do (shen.incinfs) (shen.show V2828 V2829 V2830 (freeze (bind Datatypes (value shen.*datatypes*) V2830 (freeze (shen.udefs* V2828 V2829 Datatypes V2830 V2831))))))) 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 (
|
62
|
+
(defun enable-type-theory (V2836) (cond ((= + V2836) (set shen.*shen-type-theory-enabled?* true)) ((= - V2836) (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 (
|
65
|
+
(defun shen.prolog-failure (V2845 V2846) 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* (
|
71
|
+
(defun shen.udefs* (V2847 V2848 V2849 V2850 V2851) (let Case (let V2813 (shen.lazyderef V2849 V2850) (if (cons? V2813) (let D (hd V2813) (do (shen.incinfs) (call (cons D (cons V2847 (cons V2848 ()))) V2850 V2851))) false)) (if (= Case false) (let V2814 (shen.lazyderef V2849 V2850) (if (cons? V2814) (let Ds (tl V2814) (do (shen.incinfs) (shen.udefs* V2847 V2848 Ds V2850 V2851))) false)) Case)))
|
72
72
|
|
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)))))
|
73
|
+
(defun shen.th* (V2852 V2853 V2854 V2855 V2856) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2852 (cons : (cons V2853 ()))) V2854 V2855 (freeze (fwhen false V2855 V2856)))) (if (= Case false) (let Case (let F (shen.newpv V2855) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2852 V2855)) V2855 (freeze (bind F (shen.sigf (shen.lazyderef V2852 V2855)) V2855 (freeze (call (cons F (cons V2853 ())) V2855 V2856))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2852 V2853 V2855 V2856)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2852 V2853 V2854 V2855 V2856)) (if (= Case false) (let Case (let V2689 (shen.lazyderef V2852 V2855) (if (cons? V2689) (let F (hd V2689) (let V2690 (shen.lazyderef (tl V2689) V2855) (if (= () V2690) (do (shen.incinfs) (shen.th* F (cons --> (cons V2853 ())) V2854 V2855 V2856)) false))) false)) (if (= Case false) (let Case (let V2691 (shen.lazyderef V2852 V2855) (if (cons? V2691) (let F (hd V2691) (let V2692 (shen.lazyderef (tl V2691) V2855) (if (cons? V2692) (let X (hd V2692) (let V2693 (shen.lazyderef (tl V2692) V2855) (if (= () V2693) (let B (shen.newpv V2855) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2853 ()))) V2854 V2855 (freeze (shen.th* X B V2854 V2855 V2856))))) false))) false))) false)) (if (= Case false) (let Case (let V2694 (shen.lazyderef V2852 V2855) (if (cons? V2694) (let V2695 (shen.lazyderef (hd V2694) V2855) (if (= cons V2695) (let V2696 (shen.lazyderef (tl V2694) V2855) (if (cons? V2696) (let X (hd V2696) (let V2697 (shen.lazyderef (tl V2696) V2855) (if (cons? V2697) (let Y (hd V2697) (let V2698 (shen.lazyderef (tl V2697) V2855) (if (= () V2698) (let V2699 (shen.lazyderef V2853 V2855) (if (cons? V2699) (let V2700 (shen.lazyderef (hd V2699) V2855) (if (= list V2700) (let V2701 (shen.lazyderef (tl V2699) V2855) (if (cons? V2701) (let A (hd V2701) (let V2702 (shen.lazyderef (tl V2701) V2855) (if (= () V2702) (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (if (shen.pvar? V2702) (do (shen.bindv V2702 () V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2702 V2855) Result))) false)))) (if (shen.pvar? V2701) (let A (shen.newpv V2855) (do (shen.bindv V2701 (cons A ()) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2701 V2855) Result)))) false))) (if (shen.pvar? V2700) (do (shen.bindv V2700 list V2855) (let Result (let V2703 (shen.lazyderef (tl V2699) V2855) (if (cons? V2703) (let A (hd V2703) (let V2704 (shen.lazyderef (tl V2703) V2855) (if (= () V2704) (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (if (shen.pvar? V2704) (do (shen.bindv V2704 () V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2704 V2855) Result))) false)))) (if (shen.pvar? V2703) (let A (shen.newpv V2855) (do (shen.bindv V2703 (cons A ()) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2703 V2855) Result)))) false))) (do (shen.unbindv V2700 V2855) Result))) false))) (if (shen.pvar? V2699) (let A (shen.newpv V2855) (do (shen.bindv V2699 (cons list (cons A ())) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons list (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2699 V2855) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2705 (shen.lazyderef V2852 V2855) (if (cons? V2705) (let V2706 (shen.lazyderef (hd V2705) V2855) (if (= @p V2706) (let V2707 (shen.lazyderef (tl V2705) V2855) (if (cons? V2707) (let X (hd V2707) (let V2708 (shen.lazyderef (tl V2707) V2855) (if (cons? V2708) (let Y (hd V2708) (let V2709 (shen.lazyderef (tl V2708) V2855) (if (= () V2709) (let V2710 (shen.lazyderef V2853 V2855) (if (cons? V2710) (let A (hd V2710) (let V2711 (shen.lazyderef (tl V2710) V2855) (if (cons? V2711) (let V2712 (shen.lazyderef (hd V2711) V2855) (if (= * V2712) (let V2713 (shen.lazyderef (tl V2711) V2855) (if (cons? V2713) (let B (hd V2713) (let V2714 (shen.lazyderef (tl V2713) V2855) (if (= () V2714) (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (if (shen.pvar? V2714) (do (shen.bindv V2714 () V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (do (shen.unbindv V2714 V2855) Result))) false)))) (if (shen.pvar? V2713) (let B (shen.newpv V2855) (do (shen.bindv V2713 (cons B ()) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (do (shen.unbindv V2713 V2855) Result)))) false))) (if (shen.pvar? V2712) (do (shen.bindv V2712 * V2855) (let Result (let V2715 (shen.lazyderef (tl V2711) V2855) (if (cons? V2715) (let B (hd V2715) (let V2716 (shen.lazyderef (tl V2715) V2855) (if (= () V2716) (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (if (shen.pvar? V2716) (do (shen.bindv V2716 () V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (do (shen.unbindv V2716 V2855) Result))) false)))) (if (shen.pvar? V2715) (let B (shen.newpv V2855) (do (shen.bindv V2715 (cons B ()) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (do (shen.unbindv V2715 V2855) Result)))) false))) (do (shen.unbindv V2712 V2855) Result))) false))) (if (shen.pvar? V2711) (let B (shen.newpv V2855) (do (shen.bindv V2711 (cons * (cons B ())) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (do (shen.unbindv V2711 V2855) Result)))) false)))) (if (shen.pvar? V2710) (let A (shen.newpv V2855) (let B (shen.newpv V2855) (do (shen.bindv V2710 (cons A (cons * (cons B ()))) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y B V2854 V2855 V2856)))) (do (shen.unbindv V2710 V2855) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2717 (shen.lazyderef V2852 V2855) (if (cons? V2717) (let V2718 (shen.lazyderef (hd V2717) V2855) (if (= @v V2718) (let V2719 (shen.lazyderef (tl V2717) V2855) (if (cons? V2719) (let X (hd V2719) (let V2720 (shen.lazyderef (tl V2719) V2855) (if (cons? V2720) (let Y (hd V2720) (let V2721 (shen.lazyderef (tl V2720) V2855) (if (= () V2721) (let V2722 (shen.lazyderef V2853 V2855) (if (cons? V2722) (let V2723 (shen.lazyderef (hd V2722) V2855) (if (= vector V2723) (let V2724 (shen.lazyderef (tl V2722) V2855) (if (cons? V2724) (let A (hd V2724) (let V2725 (shen.lazyderef (tl V2724) V2855) (if (= () V2725) (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (if (shen.pvar? V2725) (do (shen.bindv V2725 () V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2725 V2855) Result))) false)))) (if (shen.pvar? V2724) (let A (shen.newpv V2855) (do (shen.bindv V2724 (cons A ()) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2724 V2855) Result)))) false))) (if (shen.pvar? V2723) (do (shen.bindv V2723 vector V2855) (let Result (let V2726 (shen.lazyderef (tl V2722) V2855) (if (cons? V2726) (let A (hd V2726) (let V2727 (shen.lazyderef (tl V2726) V2855) (if (= () V2727) (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (if (shen.pvar? V2727) (do (shen.bindv V2727 () V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2727 V2855) Result))) false)))) (if (shen.pvar? V2726) (let A (shen.newpv V2855) (do (shen.bindv V2726 (cons A ()) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2726 V2855) Result)))) false))) (do (shen.unbindv V2723 V2855) Result))) false))) (if (shen.pvar? V2722) (let A (shen.newpv V2855) (do (shen.bindv V2722 (cons vector (cons A ())) V2855) (let Result (do (shen.incinfs) (shen.th* X A V2854 V2855 (freeze (shen.th* Y (cons vector (cons A ())) V2854 V2855 V2856)))) (do (shen.unbindv V2722 V2855) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2728 (shen.lazyderef V2852 V2855) (if (cons? V2728) (let V2729 (shen.lazyderef (hd V2728) V2855) (if (= @s V2729) (let V2730 (shen.lazyderef (tl V2728) V2855) (if (cons? V2730) (let X (hd V2730) (let V2731 (shen.lazyderef (tl V2730) V2855) (if (cons? V2731) (let Y (hd V2731) (let V2732 (shen.lazyderef (tl V2731) V2855) (if (= () V2732) (let V2733 (shen.lazyderef V2853 V2855) (if (= string V2733) (do (shen.incinfs) (shen.th* X string V2854 V2855 (freeze (shen.th* Y string V2854 V2855 V2856)))) (if (shen.pvar? V2733) (do (shen.bindv V2733 string V2855) (let Result (do (shen.incinfs) (shen.th* X string V2854 V2855 (freeze (shen.th* Y string V2854 V2855 V2856)))) (do (shen.unbindv V2733 V2855) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2734 (shen.lazyderef V2852 V2855) (if (cons? V2734) (let V2735 (shen.lazyderef (hd V2734) V2855) (if (= lambda V2735) (let V2736 (shen.lazyderef (tl V2734) V2855) (if (cons? V2736) (let X (hd V2736) (let V2737 (shen.lazyderef (tl V2736) V2855) (if (cons? V2737) (let Y (hd V2737) (let V2738 (shen.lazyderef (tl V2737) V2855) (if (= () V2738) (let V2739 (shen.lazyderef V2853 V2855) (if (cons? V2739) (let A (hd V2739) (let V2740 (shen.lazyderef (tl V2739) V2855) (if (cons? V2740) (let V2741 (shen.lazyderef (hd V2740) V2855) (if (= --> V2741) (let V2742 (shen.lazyderef (tl V2740) V2855) (if (cons? V2742) (let B (hd V2742) (let V2743 (shen.lazyderef (tl V2742) V2855) (if (= () V2743) (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (if (shen.pvar? V2743) (do (shen.bindv V2743 () V2855) (let Result (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (do (shen.unbindv V2743 V2855) Result))) false)))) (if (shen.pvar? V2742) (let B (shen.newpv V2855) (do (shen.bindv V2742 (cons B ()) V2855) (let Result (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (do (shen.unbindv V2742 V2855) Result)))) false))) (if (shen.pvar? V2741) (do (shen.bindv V2741 --> V2855) (let Result (let V2744 (shen.lazyderef (tl V2740) V2855) (if (cons? V2744) (let B (hd V2744) (let V2745 (shen.lazyderef (tl V2744) V2855) (if (= () V2745) (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (if (shen.pvar? V2745) (do (shen.bindv V2745 () V2855) (let Result (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (do (shen.unbindv V2745 V2855) Result))) false)))) (if (shen.pvar? V2744) (let B (shen.newpv V2855) (do (shen.bindv V2744 (cons B ()) V2855) (let Result (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (do (shen.unbindv V2744 V2855) Result)))) false))) (do (shen.unbindv V2741 V2855) Result))) false))) (if (shen.pvar? V2740) (let B (shen.newpv V2855) (do (shen.bindv V2740 (cons --> (cons B ())) V2855) (let Result (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (do (shen.unbindv V2740 V2855) Result)))) false)))) (if (shen.pvar? V2739) (let A (shen.newpv V2855) (let B (shen.newpv V2855) (do (shen.bindv V2739 (cons A (cons --> (cons B ()))) V2855) (let Result (let Z (shen.newpv V2855) (let X&& (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Y V2855)) V2855 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2854) V2855 V2856)))))))))) (do (shen.unbindv V2739 V2855) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2746 (shen.lazyderef V2852 V2855) (if (cons? V2746) (let V2747 (shen.lazyderef (hd V2746) V2855) (if (= let V2747) (let V2748 (shen.lazyderef (tl V2746) V2855) (if (cons? V2748) (let X (hd V2748) (let V2749 (shen.lazyderef (tl V2748) V2855) (if (cons? V2749) (let Y (hd V2749) (let V2750 (shen.lazyderef (tl V2749) V2855) (if (cons? V2750) (let Z (hd V2750) (let V2751 (shen.lazyderef (tl V2750) V2855) (if (= () V2751) (let W (shen.newpv V2855) (let X&& (shen.newpv V2855) (let B (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (shen.th* Y B V2854 V2855 (freeze (bind X&& (shen.placeholder) V2855 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2855) (shen.lazyderef X V2855) (shen.lazyderef Z V2855)) V2855 (freeze (shen.th* W V2853 (cons (cons X&& (cons : (cons B ()))) V2854) V2855 V2856))))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2752 (shen.lazyderef V2852 V2855) (if (cons? V2752) (let V2753 (shen.lazyderef (hd V2752) V2855) (if (= open V2753) (let V2754 (shen.lazyderef (tl V2752) V2855) (if (cons? V2754) (let V2755 (shen.lazyderef (hd V2754) V2855) (if (= file V2755) (let V2756 (shen.lazyderef (tl V2754) V2855) (if (cons? V2756) (let FileName (hd V2756) (let V2757 (shen.lazyderef (tl V2756) V2855) (if (cons? V2757) (let Direction2685 (hd V2757) (let V2758 (shen.lazyderef (tl V2757) V2855) (if (= () V2758) (let V2759 (shen.lazyderef V2853 V2855) (if (cons? V2759) (let V2760 (shen.lazyderef (hd V2759) V2855) (if (= stream V2760) (let V2761 (shen.lazyderef (tl V2759) V2855) (if (cons? V2761) (let Direction (hd V2761) (let V2762 (shen.lazyderef (tl V2761) V2855) (if (= () V2762) (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (if (shen.pvar? V2762) (do (shen.bindv V2762 () V2855) (let Result (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (do (shen.unbindv V2762 V2855) Result))) false)))) (if (shen.pvar? V2761) (let Direction (shen.newpv V2855) (do (shen.bindv V2761 (cons Direction ()) V2855) (let Result (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (do (shen.unbindv V2761 V2855) Result)))) false))) (if (shen.pvar? V2760) (do (shen.bindv V2760 stream V2855) (let Result (let V2763 (shen.lazyderef (tl V2759) V2855) (if (cons? V2763) (let Direction (hd V2763) (let V2764 (shen.lazyderef (tl V2763) V2855) (if (= () V2764) (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (if (shen.pvar? V2764) (do (shen.bindv V2764 () V2855) (let Result (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (do (shen.unbindv V2764 V2855) Result))) false)))) (if (shen.pvar? V2763) (let Direction (shen.newpv V2855) (do (shen.bindv V2763 (cons Direction ()) V2855) (let Result (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (do (shen.unbindv V2763 V2855) Result)))) false))) (do (shen.unbindv V2760 V2855) Result))) false))) (if (shen.pvar? V2759) (let Direction (shen.newpv V2855) (do (shen.bindv V2759 (cons stream (cons Direction ())) V2855) (let Result (do (shen.incinfs) (unify! Direction Direction2685 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* FileName string V2854 V2855 V2856)))))) (do (shen.unbindv V2759 V2855) Result)))) false))) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2765 (shen.lazyderef V2852 V2855) (if (cons? V2765) (let V2766 (shen.lazyderef (hd V2765) V2855) (if (= type V2766) (let V2767 (shen.lazyderef (tl V2765) V2855) (if (cons? V2767) (let X (hd V2767) (let V2768 (shen.lazyderef (tl V2767) V2855) (if (cons? V2768) (let A (hd V2768) (let V2769 (shen.lazyderef (tl V2768) V2855) (if (= () V2769) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (unify A V2853 V2855 (freeze (shen.th* X A V2854 V2855 V2856)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2770 (shen.lazyderef V2852 V2855) (if (cons? V2770) (let V2771 (shen.lazyderef (hd V2770) V2855) (if (= input+ V2771) (let V2772 (shen.lazyderef (tl V2770) V2855) (if (cons? V2772) (let V2773 (shen.lazyderef (hd V2772) V2855) (if (= : V2773) (let V2774 (shen.lazyderef (tl V2772) V2855) (if (cons? V2774) (let A (hd V2774) (let V2775 (shen.lazyderef (tl V2774) V2855) (if (= () V2775) (let C (shen.newpv V2855) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2855)) V2855 (freeze (unify V2853 C V2855 V2856))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2776 (shen.lazyderef V2852 V2855) (if (cons? V2776) (let V2777 (shen.lazyderef (hd V2776) V2855) (if (= read+ V2777) (let V2778 (shen.lazyderef (tl V2776) V2855) (if (cons? V2778) (let V2779 (shen.lazyderef (hd V2778) V2855) (if (= : V2779) (let V2780 (shen.lazyderef (tl V2778) V2855) (if (cons? V2780) (let A (hd V2780) (let V2781 (shen.lazyderef (tl V2780) V2855) (if (= () V2781) (let C (shen.newpv V2855) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2855)) V2855 (freeze (unify V2853 C V2855 V2856))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2782 (shen.lazyderef V2852 V2855) (if (cons? V2782) (let V2783 (shen.lazyderef (hd V2782) V2855) (if (= set V2783) (let V2784 (shen.lazyderef (tl V2782) V2855) (if (cons? V2784) (let Var (hd V2784) (let V2785 (shen.lazyderef (tl V2784) V2855) (if (cons? V2785) (let Val (hd V2785) (let V2786 (shen.lazyderef (tl V2785) V2855) (if (= () V2786) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (shen.th* Var symbol V2854 V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* (cons value (cons Var ())) V2853 V2854 V2855 (freeze (shen.th* Val V2853 V2854 V2855 V2856)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2787 (shen.lazyderef V2852 V2855) (if (cons? V2787) (let V2788 (shen.lazyderef (hd V2787) V2855) (if (= shen.<-sem V2788) (let V2789 (shen.lazyderef (tl V2787) V2855) (if (cons? V2789) (let F (hd V2789) (let V2790 (shen.lazyderef (tl V2789) V2855) (if (= () V2790) (let A (shen.newpv V2855) (let F&& (shen.newpv V2855) (let B (shen.newpv V2855) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2854 V2855 (freeze (cut Throwcontrol V2855 (freeze (bind F&& (concat && (shen.lazyderef F V2855)) V2855 (freeze (cut Throwcontrol V2855 (freeze (shen.th* F&& V2853 (cons (cons F&& (cons : (cons B ()))) V2854) V2855 V2856))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2791 (shen.lazyderef V2852 V2855) (if (cons? V2791) (let V2792 (shen.lazyderef (hd V2791) V2855) (if (= fail V2792) (let V2793 (shen.lazyderef (tl V2791) V2855) (if (= () V2793) (let V2794 (shen.lazyderef V2853 V2855) (if (= symbol V2794) (do (shen.incinfs) (thaw V2856)) (if (shen.pvar? V2794) (do (shen.bindv V2794 symbol V2855) (let Result (do (shen.incinfs) (thaw V2856)) (do (shen.unbindv V2794 V2855) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2855) (do (shen.incinfs) (shen.t*-hyps V2854 NewHyp V2855 (freeze (shen.th* V2852 V2853 NewHyp V2855 V2856))))) (if (= Case false) (let Case (let V2795 (shen.lazyderef V2852 V2855) (if (cons? V2795) (let V2796 (shen.lazyderef (hd V2795) V2855) (if (= define V2796) (let V2797 (shen.lazyderef (tl V2795) V2855) (if (cons? V2797) (let F (hd V2797) (let X (tl V2797) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (shen.t*-def (cons define (cons F X)) V2853 V2854 V2855 V2856)))))) false)) false)) false)) (if (= Case false) (let Case (let V2798 (shen.lazyderef V2852 V2855) (if (cons? V2798) (let V2799 (shen.lazyderef (hd V2798) V2855) (if (= defcc V2799) (let V2800 (shen.lazyderef (tl V2798) V2855) (if (cons? V2800) (let F (hd V2800) (let X (tl V2800) (do (shen.incinfs) (cut Throwcontrol V2855 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2853 V2854 V2855 V2856)))))) false)) false)) false)) (if (= Case false) (let Case (let V2801 (shen.lazyderef V2852 V2855) (if (cons? V2801) (let V2802 (shen.lazyderef (hd V2801) V2855) (if (= defmacro V2802) (let V2803 (shen.lazyderef V2853 V2855) (if (= unit V2803) (do (shen.incinfs) (cut Throwcontrol V2855 V2856)) (if (shen.pvar? V2803) (do (shen.bindv V2803 unit V2855) (let Result (do (shen.incinfs) (cut Throwcontrol V2855 V2856)) (do (shen.unbindv V2803 V2855) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2804 (shen.lazyderef V2852 V2855) (if (cons? V2804) (let V2805 (shen.lazyderef (hd V2804) V2855) (if (= shen.process-datatype V2805) (let V2806 (shen.lazyderef V2853 V2855) (if (= symbol V2806) (do (shen.incinfs) (thaw V2856)) (if (shen.pvar? V2806) (do (shen.bindv V2806 symbol V2855) (let Result (do (shen.incinfs) (thaw V2856)) (do (shen.unbindv V2806 V2855) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2807 (shen.lazyderef V2852 V2855) (if (cons? V2807) (let V2808 (shen.lazyderef (hd V2807) V2855) (if (= shen.synonyms-help V2808) (let V2809 (shen.lazyderef V2853 V2855) (if (= symbol V2809) (do (shen.incinfs) (thaw V2856)) (if (shen.pvar? V2809) (do (shen.bindv V2809 symbol V2855) (let Result (do (shen.incinfs) (thaw V2856)) (do (shen.unbindv V2809 V2855) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2855) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2855 (freeze (shen.udefs* (cons V2852 (cons : (cons V2853 ()))) V2854 Datatypes V2855 V2856))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
|
74
74
|
|
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)))
|
75
|
+
(defun shen.t*-hyps (V2857 V2858 V2859 V2860) (let Case (let V2600 (shen.lazyderef V2857 V2859) (if (cons? V2600) (let V2601 (shen.lazyderef (hd V2600) V2859) (if (cons? V2601) (let V2602 (shen.lazyderef (hd V2601) V2859) (if (cons? V2602) (let V2603 (shen.lazyderef (hd V2602) V2859) (if (= cons V2603) (let V2604 (shen.lazyderef (tl V2602) V2859) (if (cons? V2604) (let X (hd V2604) (let V2605 (shen.lazyderef (tl V2604) V2859) (if (cons? V2605) (let Y (hd V2605) (let V2606 (shen.lazyderef (tl V2605) V2859) (if (= () V2606) (let V2607 (shen.lazyderef (tl V2601) V2859) (if (cons? V2607) (let V2608 (shen.lazyderef (hd V2607) V2859) (if (= : V2608) (let V2609 (shen.lazyderef (tl V2607) V2859) (if (cons? V2609) (let V2610 (shen.lazyderef (hd V2609) V2859) (if (cons? V2610) (let V2611 (shen.lazyderef (hd V2610) V2859) (if (= list V2611) (let V2612 (shen.lazyderef (tl V2610) V2859) (if (cons? V2612) (let A (hd V2612) (let V2613 (shen.lazyderef (tl V2612) V2859) (if (= () V2613) (let V2614 (shen.lazyderef (tl V2609) V2859) (if (= () V2614) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2614) (do (shen.bindv V2614 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2614 V2859) Result))) false))) (if (shen.pvar? V2613) (do (shen.bindv V2613 () V2859) (let Result (let V2615 (shen.lazyderef (tl V2609) V2859) (if (= () V2615) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2615) (do (shen.bindv V2615 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2615 V2859) Result))) false))) (do (shen.unbindv V2613 V2859) Result))) false)))) (if (shen.pvar? V2612) (let A (shen.newpv V2859) (do (shen.bindv V2612 (cons A ()) V2859) (let Result (let V2616 (shen.lazyderef (tl V2609) V2859) (if (= () V2616) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2616) (do (shen.bindv V2616 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2616 V2859) Result))) false))) (do (shen.unbindv V2612 V2859) Result)))) false))) (if (shen.pvar? V2611) (do (shen.bindv V2611 list V2859) (let Result (let V2617 (shen.lazyderef (tl V2610) V2859) (if (cons? V2617) (let A (hd V2617) (let V2618 (shen.lazyderef (tl V2617) V2859) (if (= () V2618) (let V2619 (shen.lazyderef (tl V2609) V2859) (if (= () V2619) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2619) (do (shen.bindv V2619 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2619 V2859) Result))) false))) (if (shen.pvar? V2618) (do (shen.bindv V2618 () V2859) (let Result (let V2620 (shen.lazyderef (tl V2609) V2859) (if (= () V2620) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2620) (do (shen.bindv V2620 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2620 V2859) Result))) false))) (do (shen.unbindv V2618 V2859) Result))) false)))) (if (shen.pvar? V2617) (let A (shen.newpv V2859) (do (shen.bindv V2617 (cons A ()) V2859) (let Result (let V2621 (shen.lazyderef (tl V2609) V2859) (if (= () V2621) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2621) (do (shen.bindv V2621 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2621 V2859) Result))) false))) (do (shen.unbindv V2617 V2859) Result)))) false))) (do (shen.unbindv V2611 V2859) Result))) false))) (if (shen.pvar? V2610) (let A (shen.newpv V2859) (do (shen.bindv V2610 (cons list (cons A ())) V2859) (let Result (let V2622 (shen.lazyderef (tl V2609) V2859) (if (= () V2622) (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2622) (do (shen.bindv V2622 () V2859) (let Result (let Hyp (tl V2600) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons list (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2622 V2859) Result))) false))) (do (shen.unbindv V2610 V2859) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2623 (shen.lazyderef V2857 V2859) (if (cons? V2623) (let V2624 (shen.lazyderef (hd V2623) V2859) (if (cons? V2624) (let V2625 (shen.lazyderef (hd V2624) V2859) (if (cons? V2625) (let V2626 (shen.lazyderef (hd V2625) V2859) (if (= @p V2626) (let V2627 (shen.lazyderef (tl V2625) V2859) (if (cons? V2627) (let X (hd V2627) (let V2628 (shen.lazyderef (tl V2627) V2859) (if (cons? V2628) (let Y (hd V2628) (let V2629 (shen.lazyderef (tl V2628) V2859) (if (= () V2629) (let V2630 (shen.lazyderef (tl V2624) V2859) (if (cons? V2630) (let V2631 (shen.lazyderef (hd V2630) V2859) (if (= : V2631) (let V2632 (shen.lazyderef (tl V2630) V2859) (if (cons? V2632) (let V2633 (shen.lazyderef (hd V2632) V2859) (if (cons? V2633) (let A (hd V2633) (let V2634 (shen.lazyderef (tl V2633) V2859) (if (cons? V2634) (let V2635 (shen.lazyderef (hd V2634) V2859) (if (= * V2635) (let V2636 (shen.lazyderef (tl V2634) V2859) (if (cons? V2636) (let B (hd V2636) (let V2637 (shen.lazyderef (tl V2636) V2859) (if (= () V2637) (let V2638 (shen.lazyderef (tl V2632) V2859) (if (= () V2638) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2638) (do (shen.bindv V2638 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2638 V2859) Result))) false))) (if (shen.pvar? V2637) (do (shen.bindv V2637 () V2859) (let Result (let V2639 (shen.lazyderef (tl V2632) V2859) (if (= () V2639) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2639) (do (shen.bindv V2639 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2639 V2859) Result))) false))) (do (shen.unbindv V2637 V2859) Result))) false)))) (if (shen.pvar? V2636) (let B (shen.newpv V2859) (do (shen.bindv V2636 (cons B ()) V2859) (let Result (let V2640 (shen.lazyderef (tl V2632) V2859) (if (= () V2640) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2640) (do (shen.bindv V2640 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2640 V2859) Result))) false))) (do (shen.unbindv V2636 V2859) Result)))) false))) (if (shen.pvar? V2635) (do (shen.bindv V2635 * V2859) (let Result (let V2641 (shen.lazyderef (tl V2634) V2859) (if (cons? V2641) (let B (hd V2641) (let V2642 (shen.lazyderef (tl V2641) V2859) (if (= () V2642) (let V2643 (shen.lazyderef (tl V2632) V2859) (if (= () V2643) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2643) (do (shen.bindv V2643 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2643 V2859) Result))) false))) (if (shen.pvar? V2642) (do (shen.bindv V2642 () V2859) (let Result (let V2644 (shen.lazyderef (tl V2632) V2859) (if (= () V2644) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2644) (do (shen.bindv V2644 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2644 V2859) Result))) false))) (do (shen.unbindv V2642 V2859) Result))) false)))) (if (shen.pvar? V2641) (let B (shen.newpv V2859) (do (shen.bindv V2641 (cons B ()) V2859) (let Result (let V2645 (shen.lazyderef (tl V2632) V2859) (if (= () V2645) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2645) (do (shen.bindv V2645 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2645 V2859) Result))) false))) (do (shen.unbindv V2641 V2859) Result)))) false))) (do (shen.unbindv V2635 V2859) Result))) false))) (if (shen.pvar? V2634) (let B (shen.newpv V2859) (do (shen.bindv V2634 (cons * (cons B ())) V2859) (let Result (let V2646 (shen.lazyderef (tl V2632) V2859) (if (= () V2646) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2646) (do (shen.bindv V2646 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2646 V2859) Result))) false))) (do (shen.unbindv V2634 V2859) Result)))) false)))) (if (shen.pvar? V2633) (let A (shen.newpv V2859) (let B (shen.newpv V2859) (do (shen.bindv V2633 (cons A (cons * (cons B ()))) V2859) (let Result (let V2647 (shen.lazyderef (tl V2632) V2859) (if (= () V2647) (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2647) (do (shen.bindv V2647 () V2859) (let Result (let Hyp (tl V2623) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (shen.lazyderef B V2859) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2647 V2859) Result))) false))) (do (shen.unbindv V2633 V2859) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2648 (shen.lazyderef V2857 V2859) (if (cons? V2648) (let V2649 (shen.lazyderef (hd V2648) V2859) (if (cons? V2649) (let V2650 (shen.lazyderef (hd V2649) V2859) (if (cons? V2650) (let V2651 (shen.lazyderef (hd V2650) V2859) (if (= @v V2651) (let V2652 (shen.lazyderef (tl V2650) V2859) (if (cons? V2652) (let X (hd V2652) (let V2653 (shen.lazyderef (tl V2652) V2859) (if (cons? V2653) (let Y (hd V2653) (let V2654 (shen.lazyderef (tl V2653) V2859) (if (= () V2654) (let V2655 (shen.lazyderef (tl V2649) V2859) (if (cons? V2655) (let V2656 (shen.lazyderef (hd V2655) V2859) (if (= : V2656) (let V2657 (shen.lazyderef (tl V2655) V2859) (if (cons? V2657) (let V2658 (shen.lazyderef (hd V2657) V2859) (if (cons? V2658) (let V2659 (shen.lazyderef (hd V2658) V2859) (if (= vector V2659) (let V2660 (shen.lazyderef (tl V2658) V2859) (if (cons? V2660) (let A (hd V2660) (let V2661 (shen.lazyderef (tl V2660) V2859) (if (= () V2661) (let V2662 (shen.lazyderef (tl V2657) V2859) (if (= () V2662) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2662) (do (shen.bindv V2662 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2662 V2859) Result))) false))) (if (shen.pvar? V2661) (do (shen.bindv V2661 () V2859) (let Result (let V2663 (shen.lazyderef (tl V2657) V2859) (if (= () V2663) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2663) (do (shen.bindv V2663 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2663 V2859) Result))) false))) (do (shen.unbindv V2661 V2859) Result))) false)))) (if (shen.pvar? V2660) (let A (shen.newpv V2859) (do (shen.bindv V2660 (cons A ()) V2859) (let Result (let V2664 (shen.lazyderef (tl V2657) V2859) (if (= () V2664) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2664) (do (shen.bindv V2664 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2664 V2859) Result))) false))) (do (shen.unbindv V2660 V2859) Result)))) false))) (if (shen.pvar? V2659) (do (shen.bindv V2659 vector V2859) (let Result (let V2665 (shen.lazyderef (tl V2658) V2859) (if (cons? V2665) (let A (hd V2665) (let V2666 (shen.lazyderef (tl V2665) V2859) (if (= () V2666) (let V2667 (shen.lazyderef (tl V2657) V2859) (if (= () V2667) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2667) (do (shen.bindv V2667 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2667 V2859) Result))) false))) (if (shen.pvar? V2666) (do (shen.bindv V2666 () V2859) (let Result (let V2668 (shen.lazyderef (tl V2657) V2859) (if (= () V2668) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2668) (do (shen.bindv V2668 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2668 V2859) Result))) false))) (do (shen.unbindv V2666 V2859) Result))) false)))) (if (shen.pvar? V2665) (let A (shen.newpv V2859) (do (shen.bindv V2665 (cons A ()) V2859) (let Result (let V2669 (shen.lazyderef (tl V2657) V2859) (if (= () V2669) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2669) (do (shen.bindv V2669 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2669 V2859) Result))) false))) (do (shen.unbindv V2665 V2859) Result)))) false))) (do (shen.unbindv V2659 V2859) Result))) false))) (if (shen.pvar? V2658) (let A (shen.newpv V2859) (do (shen.bindv V2658 (cons vector (cons A ())) V2859) (let Result (let V2670 (shen.lazyderef (tl V2657) V2859) (if (= () V2670) (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2670) (do (shen.bindv V2670 () V2859) (let Result (let Hyp (tl V2648) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons (shen.lazyderef A V2859) ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons (cons vector (cons (shen.lazyderef A V2859) ())) ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2670 V2859) Result))) false))) (do (shen.unbindv V2658 V2859) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2671 (shen.lazyderef V2857 V2859) (if (cons? V2671) (let V2672 (shen.lazyderef (hd V2671) V2859) (if (cons? V2672) (let V2673 (shen.lazyderef (hd V2672) V2859) (if (cons? V2673) (let V2674 (shen.lazyderef (hd V2673) V2859) (if (= @s V2674) (let V2675 (shen.lazyderef (tl V2673) V2859) (if (cons? V2675) (let X (hd V2675) (let V2676 (shen.lazyderef (tl V2675) V2859) (if (cons? V2676) (let Y (hd V2676) (let V2677 (shen.lazyderef (tl V2676) V2859) (if (= () V2677) (let V2678 (shen.lazyderef (tl V2672) V2859) (if (cons? V2678) (let V2679 (shen.lazyderef (hd V2678) V2859) (if (= : V2679) (let V2680 (shen.lazyderef (tl V2678) V2859) (if (cons? V2680) (let V2681 (shen.lazyderef (hd V2680) V2859) (if (= string V2681) (let V2682 (shen.lazyderef (tl V2680) V2859) (if (= () V2682) (let Hyp (tl V2671) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons string ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2682) (do (shen.bindv V2682 () V2859) (let Result (let Hyp (tl V2671) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons string ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2682 V2859) Result))) false))) (if (shen.pvar? V2681) (do (shen.bindv V2681 string V2859) (let Result (let V2683 (shen.lazyderef (tl V2680) V2859) (if (= () V2683) (let Hyp (tl V2671) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons string ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (if (shen.pvar? V2683) (do (shen.bindv V2683 () V2859) (let Result (let Hyp (tl V2671) (do (shen.incinfs) (bind V2858 (cons (cons (shen.lazyderef X V2859) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2859) (cons : (cons string ()))) (shen.lazyderef Hyp V2859))) V2859 V2860))) (do (shen.unbindv V2683 V2859) Result))) false))) (do (shen.unbindv V2681 V2859) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2684 (shen.lazyderef V2857 V2859) (if (cons? V2684) (let X (hd V2684) (let Hyp (tl V2684) (let NewHyps (shen.newpv V2859) (do (shen.incinfs) (bind V2858 (cons (shen.lazyderef X V2859) (shen.lazyderef NewHyps V2859)) V2859 (freeze (shen.t*-hyps Hyp NewHyps V2859 V2860))))))) false)) Case)) Case)) Case)) Case)))
|
76
76
|
|
77
|
-
(defun shen.show (
|
78
|
-
> " (stoutput)) (do (shen.pause-for-user (value *language*)) (thaw
|
77
|
+
(defun shen.show (V2873 V2874 V2875 V2876) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2873 V2875)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2874 V2875) 1) (do (shen.prhush "
|
78
|
+
> " (stoutput)) (do (shen.pause-for-user (value *language*)) (thaw V2876))))))))) (true (thaw V2876))))
|
79
79
|
|
80
80
|
(defun shen.line () (let Infs (inferences) (shen.prhush (cn "____________________________________________________________ " (shen.app Infs (cn " inference" (shen.app (if (= 1 Infs) "" "s") "
|
81
81
|
?- " shen.a)) shen.a)) (stoutput))))
|
82
82
|
|
83
|
-
(defun shen.show-p (
|
83
|
+
(defun shen.show-p (V2877) (cond ((and (cons? V2877) (and (cons? (tl V2877)) (and (= : (hd (tl V2877))) (and (cons? (tl (tl V2877))) (= () (tl (tl (tl V2877)))))))) (shen.prhush (shen.app (hd V2877) (cn " : " (shen.app (hd (tl (tl V2877))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V2877 "" shen.r) (stoutput)))))
|
84
84
|
|
85
|
-
(defun shen.show-assumptions (
|
85
|
+
(defun shen.show-assumptions (V2880 V2881) (cond ((= () V2880) shen.skip) ((cons? V2880) (do (shen.prhush (shen.app V2881 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2880)) (do (nl 1) (shen.show-assumptions (tl V2880) (+ V2881 1)))))) (true (shen.sys-error shen.show-assumptions))))
|
86
86
|
|
87
|
-
(defun shen.pause-for-user (
|
87
|
+
(defun shen.pause-for-user (V2886) (cond ((= "Common Lisp" V2886) (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 (
|
93
|
+
(defun shen.read-char-h (V2889 V2890) (cond ((and (= -1 V2889) (= 0 V2890)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 0 V2890) (shen.read-char-h (read-byte (stinput)) 0)) ((and (= -1 V2889) (= 1 V2890)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 1 V2890) (n->string V2889)) (true (shen.sys-error shen.read-char-h))))
|
94
94
|
|
95
|
-
(defun shen.typedf? (
|
95
|
+
(defun shen.typedf? (V2891) (cons? (assoc V2891 (value shen.*signedfuncs*))))
|
96
96
|
|
97
|
-
(defun shen.sigf (
|
97
|
+
(defun shen.sigf (V2892) (concat shen.type-signature-of- V2892))
|
98
98
|
|
99
99
|
(defun shen.placeholder () (gensym &&))
|
100
100
|
|
101
|
-
(defun shen.base (
|
101
|
+
(defun shen.base (V2893 V2894 V2895 V2896) (let Case (let V2587 (shen.lazyderef V2894 V2895) (if (= number V2587) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2893 V2895)) V2895 V2896)) (if (shen.pvar? V2587) (do (shen.bindv V2587 number V2895) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2893 V2895)) V2895 V2896)) (do (shen.unbindv V2587 V2895) Result))) false))) (if (= Case false) (let Case (let V2588 (shen.lazyderef V2894 V2895) (if (= boolean V2588) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2893 V2895)) V2895 V2896)) (if (shen.pvar? V2588) (do (shen.bindv V2588 boolean V2895) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2893 V2895)) V2895 V2896)) (do (shen.unbindv V2588 V2895) Result))) false))) (if (= Case false) (let Case (let V2589 (shen.lazyderef V2894 V2895) (if (= string V2589) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2893 V2895)) V2895 V2896)) (if (shen.pvar? V2589) (do (shen.bindv V2589 string V2895) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2893 V2895)) V2895 V2896)) (do (shen.unbindv V2589 V2895) Result))) false))) (if (= Case false) (let Case (let V2590 (shen.lazyderef V2894 V2895) (if (= symbol V2590) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2893 V2895)) V2895 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2893 V2895))) V2895 V2896)))) (if (shen.pvar? V2590) (do (shen.bindv V2590 symbol V2895) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2893 V2895)) V2895 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2893 V2895))) V2895 V2896)))) (do (shen.unbindv V2590 V2895) Result))) false))) (if (= Case false) (let V2591 (shen.lazyderef V2893 V2895) (if (= () V2591) (let V2592 (shen.lazyderef V2894 V2895) (if (cons? V2592) (let V2593 (shen.lazyderef (hd V2592) V2895) (if (= list V2593) (let V2594 (shen.lazyderef (tl V2592) V2895) (if (cons? V2594) (let A (hd V2594) (let V2595 (shen.lazyderef (tl V2594) V2895) (if (= () V2595) (do (shen.incinfs) (thaw V2896)) (if (shen.pvar? V2595) (do (shen.bindv V2595 () V2895) (let Result (do (shen.incinfs) (thaw V2896)) (do (shen.unbindv V2595 V2895) Result))) false)))) (if (shen.pvar? V2594) (let A (shen.newpv V2895) (do (shen.bindv V2594 (cons A ()) V2895) (let Result (do (shen.incinfs) (thaw V2896)) (do (shen.unbindv V2594 V2895) Result)))) false))) (if (shen.pvar? V2593) (do (shen.bindv V2593 list V2895) (let Result (let V2596 (shen.lazyderef (tl V2592) V2895) (if (cons? V2596) (let A (hd V2596) (let V2597 (shen.lazyderef (tl V2596) V2895) (if (= () V2597) (do (shen.incinfs) (thaw V2896)) (if (shen.pvar? V2597) (do (shen.bindv V2597 () V2895) (let Result (do (shen.incinfs) (thaw V2896)) (do (shen.unbindv V2597 V2895) Result))) false)))) (if (shen.pvar? V2596) (let A (shen.newpv V2895) (do (shen.bindv V2596 (cons A ()) V2895) (let Result (do (shen.incinfs) (thaw V2896)) (do (shen.unbindv V2596 V2895) Result)))) false))) (do (shen.unbindv V2593 V2895) Result))) false))) (if (shen.pvar? V2592) (let A (shen.newpv V2895) (do (shen.bindv V2592 (cons list (cons A ())) V2895) (let Result (do (shen.incinfs) (thaw V2896)) (do (shen.unbindv V2592 V2895) Result)))) false))) false)) Case)) Case)) Case)) Case)))
|
102
102
|
|
103
|
-
(defun shen.by_hypothesis (
|
103
|
+
(defun shen.by_hypothesis (V2897 V2898 V2899 V2900 V2901) (let Case (let V2578 (shen.lazyderef V2899 V2900) (if (cons? V2578) (let V2579 (shen.lazyderef (hd V2578) V2900) (if (cons? V2579) (let Y (hd V2579) (let V2580 (shen.lazyderef (tl V2579) V2900) (if (cons? V2580) (let V2581 (shen.lazyderef (hd V2580) V2900) (if (= : V2581) (let V2582 (shen.lazyderef (tl V2580) V2900) (if (cons? V2582) (let B (hd V2582) (let V2583 (shen.lazyderef (tl V2582) V2900) (if (= () V2583) (do (shen.incinfs) (identical V2897 Y V2900 (freeze (unify! V2898 B V2900 V2901)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2584 (shen.lazyderef V2899 V2900) (if (cons? V2584) (let Hyp (tl V2584) (do (shen.incinfs) (shen.by_hypothesis V2897 V2898 Hyp V2900 V2901))) false)) Case)))
|
104
104
|
|
105
|
-
(defun shen.t*-def (
|
105
|
+
(defun shen.t*-def (V2902 V2903 V2904 V2905 V2906) (let V2572 (shen.lazyderef V2902 V2905) (if (cons? V2572) (let V2573 (shen.lazyderef (hd V2572) V2905) (if (= define V2573) (let V2574 (shen.lazyderef (tl V2572) V2905) (if (cons? V2574) (let F (hd V2574) (let X (tl V2574) (let E (shen.newpv V2905) (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 "
|
106
106
|
" shen.s))) (simple-error "parse error
|
107
|
-
")))) F
|
107
|
+
")))) F V2903 V2904 V2905 V2906))))) false)) false)) false)))
|
108
108
|
|
109
|
-
(defun shen.t*-defh (
|
109
|
+
(defun shen.t*-defh (V2907 V2908 V2909 V2910 V2911 V2912) (let V2568 (shen.lazyderef V2907 V2911) (if (cons? V2568) (let Sig (hd V2568) (let Rules (tl V2568) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue Sig) V2908 V2909 V2910 Rules V2911 V2912)))) false)))
|
110
110
|
|
111
|
-
(defun shen.t*-defhh (
|
111
|
+
(defun shen.t*-defhh (V2913 V2914 V2915 V2916 V2917 V2918 V2919 V2920) (do (shen.incinfs) (shen.t*-rules V2918 V2914 1 V2915 (cons (cons V2915 (cons : (cons V2914 ()))) V2917) V2919 (freeze (shen.memo V2915 V2913 V2916 V2919 V2920)))))
|
112
112
|
|
113
|
-
(defun shen.memo (
|
113
|
+
(defun shen.memo (V2921 V2922 V2923 V2924 V2925) (let Jnk (shen.newpv V2924) (do (shen.incinfs) (unify! V2923 V2922 V2924 (freeze (bind Jnk (declare (shen.lazyderef V2921 V2924) (shen.lazyderef V2923 V2924)) V2924 V2925))))))
|
114
114
|
|
115
|
-
(defun shen.<sig+rules> (
|
115
|
+
(defun shen.<sig+rules> (V2930) (let Result (let Parse_shen.<signature> (shen.<signature> V2930) (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)))
|
116
116
|
|
117
|
-
(defun shen.ue (
|
117
|
+
(defun shen.ue (V2931) (cond ((cons? V2931) (map shen.ue V2931)) ((variable? V2931) (concat && V2931)) (true V2931)))
|
118
118
|
|
119
|
-
(defun shen.ues (
|
119
|
+
(defun shen.ues (V2936) (cond ((shen.ue? V2936) (cons V2936 ())) ((cons? V2936) (union (shen.ues (hd V2936)) (shen.ues (tl V2936)))) (true ())))
|
120
120
|
|
121
|
-
(defun shen.ue? (
|
121
|
+
(defun shen.ue? (V2937) (and (symbol? V2937) (shen.ue-h? (str V2937))))
|
122
122
|
|
123
|
-
(defun shen.ue-h? (
|
123
|
+
(defun shen.ue-h? (V2944) (cond ((and (shen.+string? V2944) (and (= "&" (pos V2944 0)) (and (shen.+string? (tlstr V2944)) (= "&" (pos (tlstr V2944) 0))))) true) (true false)))
|
124
124
|
|
125
|
-
(defun shen.t*-rules (
|
125
|
+
(defun shen.t*-rules (V2945 V2946 V2947 V2948 V2949 V2950 V2951) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2543 (shen.lazyderef V2945 V2950) (if (= () V2543) (do (shen.incinfs) (thaw V2951)) false)) (if (= Case false) (let Case (let V2544 (shen.lazyderef V2945 V2950) (if (cons? V2544) (let V2545 (shen.lazyderef (hd V2544) V2950) (if (cons? V2545) (let V2546 (shen.lazyderef (hd V2545) V2950) (if (= () V2546) (let V2547 (shen.lazyderef (tl V2545) V2950) (if (cons? V2547) (let Action (hd V2547) (let V2548 (shen.lazyderef (tl V2547) V2950) (if (= () V2548) (let Rules (tl V2544) (let V2549 (shen.lazyderef V2946 V2950) (if (cons? V2549) (let V2550 (shen.lazyderef (hd V2549) V2950) (if (= --> V2550) (let V2551 (shen.lazyderef (tl V2549) V2950) (if (cons? V2551) (let A (hd V2551) (let V2552 (shen.lazyderef (tl V2551) V2950) (if (= () V2552) (do (shen.incinfs) (shen.t*-rule (cons () (cons (shen.ue Action) ())) A V2949 V2950 (freeze (cut Throwcontrol V2950 (freeze (shen.t*-rules Rules A (+ V2947 1) V2948 V2949 V2950 V2951)))))) false))) false)) false)) false))) false))) false)) false)) false)) false)) (if (= Case false) (let Case (let V2553 (shen.lazyderef V2945 V2950) (if (cons? V2553) (let Rule (hd V2553) (let Rules (tl V2553) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2946 V2949 V2950 (freeze (cut Throwcontrol V2950 (freeze (shen.t*-rules Rules V2946 (+ V2947 1) V2948 V2949 V2950 V2951)))))))) false)) (if (= Case false) (let Err (shen.newpv V2950) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2947 V2950) (cn " of " (shen.app (shen.lazyderef V2948 V2950) "" shen.a)) shen.a))) V2950 V2951))) Case)) Case)) Case)))))
|
126
126
|
|
127
|
-
(defun shen.t*-rule (
|
127
|
+
(defun shen.t*-rule (V2952 V2953 V2954 V2955 V2956) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2525 (shen.lazyderef V2952 V2955) (if (cons? V2525) (let V2526 (shen.lazyderef (hd V2525) V2955) (if (= () V2526) (let V2527 (shen.lazyderef (tl V2525) V2955) (if (cons? V2527) (let Action (hd V2527) (let V2528 (shen.lazyderef (tl V2527) V2955) (if (= () V2528) (do (shen.incinfs) (cut Throwcontrol V2955 (freeze (shen.t*-action (shen.curry Action) V2953 V2954 V2955 V2956)))) false))) false)) false)) false)) (if (= Case false) (let V2529 (shen.lazyderef V2952 V2955) (if (cons? V2529) (let V2530 (shen.lazyderef (hd V2529) V2955) (if (cons? V2530) (let Pattern (hd V2530) (let Patterns (tl V2530) (let V2531 (shen.lazyderef (tl V2529) V2955) (if (cons? V2531) (let Action (hd V2531) (let V2532 (shen.lazyderef (tl V2531) V2955) (if (= () V2532) (let V2533 (shen.lazyderef V2953 V2955) (if (cons? V2533) (let A (hd V2533) (let V2534 (shen.lazyderef (tl V2533) V2955) (if (cons? V2534) (let V2535 (shen.lazyderef (hd V2534) V2955) (if (= --> V2535) (let V2536 (shen.lazyderef (tl V2534) V2955) (if (cons? V2536) (let B (hd V2536) (let V2537 (shen.lazyderef (tl V2536) V2955) (if (= () V2537) (do (shen.incinfs) (shen.t*-pattern Pattern A V2955 (freeze (cut Throwcontrol V2955 (freeze (shen.t*-rule (cons Patterns (cons Action ())) B (cons (cons Pattern (cons : (cons A ()))) V2954) V2955 V2956)))))) false))) false)) false)) false))) false)) false))) false)))) false)) false)) Case)))))
|
128
128
|
|
129
|
-
(defun shen.t*-action (
|
129
|
+
(defun shen.t*-action (V2957 V2958 V2959 V2960 V2961) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2502 (shen.lazyderef V2957 V2960) (if (cons? V2502) (let V2503 (shen.lazyderef (hd V2502) V2960) (if (= where V2503) (let V2504 (shen.lazyderef (tl V2502) V2960) (if (cons? V2504) (let P (hd V2504) (let V2505 (shen.lazyderef (tl V2504) V2960) (if (cons? V2505) (let Action (hd V2505) (let V2506 (shen.lazyderef (tl V2505) V2960) (if (= () V2506) (do (shen.incinfs) (cut Throwcontrol V2960 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2959 V2960 (freeze (cut Throwcontrol V2960 (freeze (shen.t*-action Action V2958 (cons (cons P (cons : (cons verified ()))) V2959) V2960 V2961)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2507 (shen.lazyderef V2957 V2960) (if (cons? V2507) (let V2508 (shen.lazyderef (hd V2507) V2960) (if (= shen.choicepoint! V2508) (let V2509 (shen.lazyderef (tl V2507) V2960) (if (cons? V2509) (let V2510 (shen.lazyderef (hd V2509) V2960) (if (cons? V2510) (let V2511 (shen.lazyderef (hd V2510) V2960) (if (cons? V2511) (let V2512 (shen.lazyderef (hd V2511) V2960) (if (= fail-if V2512) (let V2513 (shen.lazyderef (tl V2511) V2960) (if (cons? V2513) (let F (hd V2513) (let V2514 (shen.lazyderef (tl V2513) V2960) (if (= () V2514) (let V2515 (shen.lazyderef (tl V2510) V2960) (if (cons? V2515) (let Action (hd V2515) (let V2516 (shen.lazyderef (tl V2515) V2960) (if (= () V2516) (let V2517 (shen.lazyderef (tl V2509) V2960) (if (= () V2517) (do (shen.incinfs) (cut Throwcontrol V2960 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2958 V2959 V2960 V2961)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2518 (shen.lazyderef V2957 V2960) (if (cons? V2518) (let V2519 (shen.lazyderef (hd V2518) V2960) (if (= shen.choicepoint! V2519) (let V2520 (shen.lazyderef (tl V2518) V2960) (if (cons? V2520) (let Action (hd V2520) (let V2521 (shen.lazyderef (tl V2520) V2960) (if (= () V2521) (do (shen.incinfs) (cut Throwcontrol V2960 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2958 V2959 V2960 V2961)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2957 (cons : (cons V2958 ()))) V2959 V2960 V2961)) Case)) Case)) Case)))))
|
130
130
|
|
131
|
-
(defun shen.t*-pattern (
|
131
|
+
(defun shen.t*-pattern (V2962 V2963 V2964 V2965) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Hyp (shen.newpv V2964) (do (shen.incinfs) (shen.tms->hyp (shen.ues V2962) Hyp V2964 (freeze (cut Throwcontrol V2964 (freeze (shen.t* (cons V2962 (cons : (cons V2963 ()))) Hyp V2964 V2965))))))))))
|
132
132
|
|
133
|
-
(defun shen.tms->hyp (
|
133
|
+
(defun shen.tms->hyp (V2966 V2967 V2968 V2969) (let Case (let V2486 (shen.lazyderef V2966 V2968) (if (= () V2486) (let V2487 (shen.lazyderef V2967 V2968) (if (= () V2487) (do (shen.incinfs) (thaw V2969)) (if (shen.pvar? V2487) (do (shen.bindv V2487 () V2968) (let Result (do (shen.incinfs) (thaw V2969)) (do (shen.unbindv V2487 V2968) Result))) false))) false)) (if (= Case false) (let V2488 (shen.lazyderef V2966 V2968) (if (cons? V2488) (let Tm2483 (hd V2488) (let Tms (tl V2488) (let V2489 (shen.lazyderef V2967 V2968) (if (cons? V2489) (let V2490 (shen.lazyderef (hd V2489) V2968) (if (cons? V2490) (let Tm (hd V2490) (let V2491 (shen.lazyderef (tl V2490) V2968) (if (cons? V2491) (let V2492 (shen.lazyderef (hd V2491) V2968) (if (= : V2492) (let V2493 (shen.lazyderef (tl V2491) V2968) (if (cons? V2493) (let A (hd V2493) (let V2494 (shen.lazyderef (tl V2493) V2968) (if (= () V2494) (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (if (shen.pvar? V2494) (do (shen.bindv V2494 () V2968) (let Result (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2494 V2968) Result))) false)))) (if (shen.pvar? V2493) (let A (shen.newpv V2968) (do (shen.bindv V2493 (cons A ()) V2968) (let Result (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2493 V2968) Result)))) false))) (if (shen.pvar? V2492) (do (shen.bindv V2492 : V2968) (let Result (let V2495 (shen.lazyderef (tl V2491) V2968) (if (cons? V2495) (let A (hd V2495) (let V2496 (shen.lazyderef (tl V2495) V2968) (if (= () V2496) (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (if (shen.pvar? V2496) (do (shen.bindv V2496 () V2968) (let Result (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2496 V2968) Result))) false)))) (if (shen.pvar? V2495) (let A (shen.newpv V2968) (do (shen.bindv V2495 (cons A ()) V2968) (let Result (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2495 V2968) Result)))) false))) (do (shen.unbindv V2492 V2968) Result))) false))) (if (shen.pvar? V2491) (let A (shen.newpv V2968) (do (shen.bindv V2491 (cons : (cons A ())) V2968) (let Result (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2491 V2968) Result)))) false)))) (if (shen.pvar? V2490) (let Tm (shen.newpv V2968) (let A (shen.newpv V2968) (do (shen.bindv V2490 (cons Tm (cons : (cons A ()))) V2968) (let Result (let Hyp (tl V2489) (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969))))) (do (shen.unbindv V2490 V2968) Result))))) false))) (if (shen.pvar? V2489) (let Tm (shen.newpv V2968) (let A (shen.newpv V2968) (let Hyp (shen.newpv V2968) (do (shen.bindv V2489 (cons (cons Tm (cons : (cons A ()))) Hyp) V2968) (let Result (do (shen.incinfs) (unify! Tm Tm2483 V2968 (freeze (shen.tms->hyp Tms Hyp V2968 V2969)))) (do (shen.unbindv V2489 V2968) Result)))))) false))))) false)) Case)))
|
134
134
|
|
135
|
-
(defun findall (
|
135
|
+
(defun findall (V2970 V2971 V2972 V2973 V2974) (let B (shen.newpv V2973) (let A (shen.newpv V2973) (do (shen.incinfs) (bind A (gensym shen.a) V2973 (freeze (bind B (set (shen.lazyderef A V2973) ()) V2973 (freeze (shen.findallhelp V2970 V2971 V2972 A V2973 V2974)))))))))
|
136
136
|
|
137
|
-
(defun shen.findallhelp (
|
137
|
+
(defun shen.findallhelp (V2975 V2976 V2977 V2978 V2979 V2980) (let Case (do (shen.incinfs) (call V2976 V2979 (freeze (shen.remember V2978 V2975 V2979 (freeze (fwhen false V2979 V2980)))))) (if (= Case false) (do (shen.incinfs) (bind V2977 (value (shen.lazyderef V2978 V2979)) V2979 V2980)) Case)))
|
138
138
|
|
139
|
-
(defun shen.remember (
|
139
|
+
(defun shen.remember (V2981 V2982 V2983 V2984) (let B (shen.newpv V2983) (do (shen.incinfs) (bind B (set (shen.deref V2981 V2983) (cons (shen.deref V2982 V2983) (value (shen.deref V2981 V2983)))) V2983 V2984))))
|
140
140
|
|
141
|
-
(defun shen.t*-defcc (
|
141
|
+
(defun shen.t*-defcc (V2985 V2986 V2987 V2988 V2989) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2459 (shen.lazyderef V2985 V2988) (if (cons? V2459) (let V2460 (shen.lazyderef (hd V2459) V2988) (if (= defcc V2460) (let V2461 (shen.lazyderef (tl V2459) V2988) (if (cons? V2461) (let F (hd V2461) (let V2462 (shen.lazyderef (tl V2461) V2988) (if (cons? V2462) (let V2463 (shen.lazyderef (hd V2462) V2988) (if (= { V2463) (let V2464 (shen.lazyderef (tl V2462) V2988) (if (cons? V2464) (let V2465 (shen.lazyderef (hd V2464) V2988) (if (cons? V2465) (let V2466 (shen.lazyderef (hd V2465) V2988) (if (= list V2466) (let V2467 (shen.lazyderef (tl V2465) V2988) (if (cons? V2467) (let A (hd V2467) (let V2468 (shen.lazyderef (tl V2467) V2988) (if (= () V2468) (let V2469 (shen.lazyderef (tl V2464) V2988) (if (cons? V2469) (let V2470 (shen.lazyderef (hd V2469) V2988) (if (= ==> V2470) (let V2471 (shen.lazyderef (tl V2469) V2988) (if (cons? V2471) (let B (hd V2471) (let V2472 (shen.lazyderef (tl V2471) V2988) (if (cons? V2472) (let V2473 (shen.lazyderef (hd V2472) V2988) (if (= } V2473) (let Rest (tl V2472) (let Rest& (shen.newpv V2988) (let Rest&& (shen.newpv V2988) (let Rules (shen.newpv V2988) (let ListA&& (shen.newpv V2988) (let B&& (shen.newpv V2988) (let Sig (shen.newpv V2988) (let Declare (shen.newpv V2988) (do (shen.incinfs) (bind Sig (shen.ue (cons (cons list (cons (shen.lazyderef A V2988) ())) (cons ==> (cons (shen.lazyderef B V2988) ())))) V2988 (freeze (bind ListA&& (hd (shen.lazyderef Sig V2988)) V2988 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V2988)))) V2988 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V2988)) V2988 (freeze (bind Rest&& (shen.ue (shen.lazyderef Rest& V2988)) V2988 (freeze (shen.get-rules Rules Rest&& V2988 (freeze (cut Throwcontrol V2988 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V2987) 1 V2988 (freeze (unify V2986 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V2988 (freeze (bind Declare (declare (shen.lazyderef F V2988) (cons (cons list (cons (shen.lazyderef A V2988) ())) (cons ==> (cons (shen.lazyderef B V2988) ())))) V2988 V2989)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
|
142
142
|
|
143
|
-
(defun shen.plug-wildcards (
|
143
|
+
(defun shen.plug-wildcards (V2990) (cond ((cons? V2990) (map shen.plug-wildcards V2990)) ((= V2990 _) (gensym (intern "X"))) (true V2990)))
|
144
144
|
|
145
|
-
(defun shen.get-rules (
|
145
|
+
(defun shen.get-rules (V2991 V2992 V2993 V2994) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2452 (shen.lazyderef V2991 V2993) (if (= () V2452) (let V2453 (shen.lazyderef V2992 V2993) (if (= () V2453) (do (shen.incinfs) (cut Throwcontrol V2993 V2994)) false)) (if (shen.pvar? V2452) (do (shen.bindv V2452 () V2993) (let Result (let V2454 (shen.lazyderef V2992 V2993) (if (= () V2454) (do (shen.incinfs) (cut Throwcontrol V2993 V2994)) false)) (do (shen.unbindv V2452 V2993) Result))) false))) (if (= Case false) (let V2455 (shen.lazyderef V2991 V2993) (if (cons? V2455) (let Rule (hd V2455) (let Rules (tl V2455) (let Other (shen.newpv V2993) (do (shen.incinfs) (shen.first-rule V2992 Rule Other V2993 (freeze (cut Throwcontrol V2993 (freeze (shen.get-rules Rules Other V2993 V2994))))))))) (if (shen.pvar? V2455) (let Rule (shen.newpv V2993) (let Rules (shen.newpv V2993) (do (shen.bindv V2455 (cons Rule Rules) V2993) (let Result (let Other (shen.newpv V2993) (do (shen.incinfs) (shen.first-rule V2992 Rule Other V2993 (freeze (cut Throwcontrol V2993 (freeze (shen.get-rules Rules Other V2993 V2994))))))) (do (shen.unbindv V2455 V2993) Result))))) false))) Case)))))
|
146
146
|
|
147
|
-
(defun shen.first-rule (
|
147
|
+
(defun shen.first-rule (V2995 V2996 V2997 V2998 V2999) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2445 (shen.lazyderef V2995 V2998) (if (cons? V2445) (let V2446 (shen.lazyderef (hd V2445) V2998) (if (= ; V2446) (let Other2440 (tl V2445) (let V2447 (shen.lazyderef V2996 V2998) (if (= () V2447) (do (shen.incinfs) (unify! V2997 Other2440 V2998 (freeze (cut Throwcontrol V2998 V2999)))) (if (shen.pvar? V2447) (do (shen.bindv V2447 () V2998) (let Result (do (shen.incinfs) (unify! V2997 Other2440 V2998 (freeze (cut Throwcontrol V2998 V2999)))) (do (shen.unbindv V2447 V2998) Result))) false)))) false)) false)) (if (= Case false) (let V2448 (shen.lazyderef V2995 V2998) (if (cons? V2448) (let X2441 (hd V2448) (let Rest (tl V2448) (let V2449 (shen.lazyderef V2996 V2998) (if (cons? V2449) (let X (hd V2449) (let Rule (tl V2449) (do (shen.incinfs) (unify! X X2441 V2998 (freeze (shen.first-rule Rest Rule V2997 V2998 V2999)))))) (if (shen.pvar? V2449) (let X (shen.newpv V2998) (let Rule (shen.newpv V2998) (do (shen.bindv V2449 (cons X Rule) V2998) (let Result (do (shen.incinfs) (unify! X X2441 V2998 (freeze (shen.first-rule Rest Rule V2997 V2998 V2999)))) (do (shen.unbindv V2449 V2998) Result))))) false))))) false)) Case)))))
|
148
148
|
|
149
|
-
(defun shen.tc-rules (
|
149
|
+
(defun shen.tc-rules (V3000 V3001 V3002 V3003 V3004 V3005 V3006 V3007) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2434 (shen.lazyderef V3001 V3006) (if (= () V2434) (do (shen.incinfs) (thaw V3007)) false)) (if (= Case false) (let V2435 (shen.lazyderef V3001 V3006) (if (cons? V2435) (let Rule (hd V2435) (let Rules (tl V2435) (let V2436 (shen.lazyderef V3002 V3006) (if (cons? V2436) (let V2437 (shen.lazyderef (hd V2436) V3006) (if (= list V2437) (let V2438 (shen.lazyderef (tl V2436) V3006) (if (cons? V2438) (let A (hd V2438) (let V2439 (shen.lazyderef (tl V2438) V3006) (if (= () V2439) (let M (shen.newpv V3006) (do (shen.incinfs) (shen.tc-rule V3000 Rule A V3003 V3004 V3005 V3006 (freeze (bind M (+ (shen.deref V3005 V3006) 1) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.tc-rules V3000 Rules (cons list (cons A ())) V3003 V3004 M V3006 V3007))))))))) false))) false)) false)) false)))) false)) Case)))))
|
150
150
|
|
151
|
-
(defun shen.tc-rule (
|
151
|
+
(defun shen.tc-rule (V3008 V3009 V3010 V3011 V3012 V3013 V3014 V3015) (let Case (do (shen.incinfs) (shen.check-defcc-rule V3009 V3010 V3011 V3012 V3014 V3015)) (if (= Case false) (let Err (shen.newpv V3014) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V3013 V3014) (cn " of " (shen.app (shen.lazyderef V3008 V3014) "" shen.a)) shen.a))) V3014 V3015))) Case)))
|
152
152
|
|
153
|
-
(defun shen.check-defcc-rule (
|
153
|
+
(defun shen.check-defcc-rule (V3016 V3017 V3018 V3019 V3020 V3021) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V3020) (let Semantics (shen.newpv V3020) (let SynHyps (shen.newpv V3020) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V3016 V3020 (freeze (cut Throwcontrol V3020 (freeze (shen.syntax-hyps Syntax V3019 SynHyps V3017 V3020 (freeze (cut Throwcontrol V3020 (freeze (shen.syntax-check Syntax V3017 SynHyps V3020 (freeze (cut Throwcontrol V3020 (freeze (shen.semantics-check Semantics V3018 SynHyps V3020 V3021))))))))))))))))))))
|
154
154
|
|
155
|
-
(defun shen.syntax-hyps (
|
155
|
+
(defun shen.syntax-hyps (V3022 V3023 V3024 V3025 V3026 V3027) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2407 (shen.lazyderef V3022 V3026) (if (= () V2407) (do (shen.incinfs) (unify! V3024 V3023 V3026 V3027)) false)) (if (= Case false) (let Case (let V2408 (shen.lazyderef V3022 V3026) (if (cons? V2408) (let X2401 (hd V2408) (let Y (tl V2408) (let V2409 (shen.lazyderef V3024 V3026) (if (cons? V2409) (let V2410 (shen.lazyderef (hd V2409) V3026) (if (cons? V2410) (let X (hd V2410) (let V2411 (shen.lazyderef (tl V2410) V3026) (if (cons? V2411) (let V2412 (shen.lazyderef (hd V2411) V3026) (if (= : V2412) (let V2413 (shen.lazyderef (tl V2411) V3026) (if (cons? V2413) (let A2402 (hd V2413) (let V2414 (shen.lazyderef (tl V2413) V3026) (if (= () V2414) (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (if (shen.pvar? V2414) (do (shen.bindv V2414 () V3026) (let Result (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2414 V3026) Result))) false)))) (if (shen.pvar? V2413) (let A2402 (shen.newpv V3026) (do (shen.bindv V2413 (cons A2402 ()) V3026) (let Result (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2413 V3026) Result)))) false))) (if (shen.pvar? V2412) (do (shen.bindv V2412 : V3026) (let Result (let V2415 (shen.lazyderef (tl V2411) V3026) (if (cons? V2415) (let A2402 (hd V2415) (let V2416 (shen.lazyderef (tl V2415) V3026) (if (= () V2416) (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (if (shen.pvar? V2416) (do (shen.bindv V2416 () V3026) (let Result (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2416 V3026) Result))) false)))) (if (shen.pvar? V2415) (let A2402 (shen.newpv V3026) (do (shen.bindv V2415 (cons A2402 ()) V3026) (let Result (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2415 V3026) Result)))) false))) (do (shen.unbindv V2412 V3026) Result))) false))) (if (shen.pvar? V2411) (let A2402 (shen.newpv V3026) (do (shen.bindv V2411 (cons : (cons A2402 ())) V3026) (let Result (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2411 V3026) Result)))) false)))) (if (shen.pvar? V2410) (let X (shen.newpv V3026) (let A2402 (shen.newpv V3026) (do (shen.bindv V2410 (cons X (cons : (cons A2402 ()))) V3026) (let Result (let SynHyps (tl V2409) (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027))))))))))) (do (shen.unbindv V2410 V3026) Result))))) false))) (if (shen.pvar? V2409) (let X (shen.newpv V3026) (let A2402 (shen.newpv V3026) (let SynHyps (shen.newpv V3026) (do (shen.bindv V2409 (cons (cons X (cons : (cons A2402 ()))) SynHyps) V3026) (let Result (do (shen.incinfs) (unify! V3025 A2402 V3026 (freeze (unify! X X2401 V3026 (freeze (fwhen (shen.ue? (shen.deref X V3026)) V3026 (freeze (cut Throwcontrol V3026 (freeze (shen.syntax-hyps Y V3023 SynHyps V3025 V3026 V3027)))))))))) (do (shen.unbindv V2409 V3026) Result)))))) false))))) false)) (if (= Case false) (let V2417 (shen.lazyderef V3022 V3026) (if (cons? V2417) (let Y (tl V2417) (do (shen.incinfs) (shen.syntax-hyps Y V3023 V3024 V3025 V3026 V3027))) false)) Case)) Case)))))
|
156
156
|
|
157
|
-
(defun shen.get-syntax+semantics (
|
157
|
+
(defun shen.get-syntax+semantics (V3028 V3029 V3030 V3031 V3032) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2373 (shen.lazyderef V3028 V3031) (if (= () V2373) (let V2374 (shen.lazyderef V3030 V3031) (if (cons? V2374) (let V2375 (shen.lazyderef (hd V2374) V3031) (if (= := V2375) (let V2376 (shen.lazyderef (tl V2374) V3031) (if (cons? V2376) (let Semantics (hd V2376) (let V2377 (shen.lazyderef (tl V2376) V3031) (if (= () V2377) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (shen.lazyderef Semantics V3031) V3031 V3032)))) false))) false)) false)) false)) (if (shen.pvar? V2373) (do (shen.bindv V2373 () V3031) (let Result (let V2378 (shen.lazyderef V3030 V3031) (if (cons? V2378) (let V2379 (shen.lazyderef (hd V2378) V3031) (if (= := V2379) (let V2380 (shen.lazyderef (tl V2378) V3031) (if (cons? V2380) (let Semantics (hd V2380) (let V2381 (shen.lazyderef (tl V2380) V3031) (if (= () V2381) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (shen.lazyderef Semantics V3031) V3031 V3032)))) false))) false)) false)) false)) (do (shen.unbindv V2373 V3031) Result))) false))) (if (= Case false) (let Case (let V2382 (shen.lazyderef V3028 V3031) (if (= () V2382) (let V2383 (shen.lazyderef V3030 V3031) (if (cons? V2383) (let V2384 (shen.lazyderef (hd V2383) V3031) (if (= := V2384) (let V2385 (shen.lazyderef (tl V2383) V3031) (if (cons? V2385) (let Semantics (hd V2385) (let V2386 (shen.lazyderef (tl V2385) V3031) (if (cons? V2386) (let V2387 (shen.lazyderef (hd V2386) V3031) (if (= where V2387) (let V2388 (shen.lazyderef (tl V2386) V3031) (if (cons? V2388) (let G (hd V2388) (let V2389 (shen.lazyderef (tl V2388) V3031) (if (= () V2389) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (cons where (cons (shen.lazyderef G V3031) (cons (shen.lazyderef Semantics V3031) ()))) V3031 V3032)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2382) (do (shen.bindv V2382 () V3031) (let Result (let V2390 (shen.lazyderef V3030 V3031) (if (cons? V2390) (let V2391 (shen.lazyderef (hd V2390) V3031) (if (= := V2391) (let V2392 (shen.lazyderef (tl V2390) V3031) (if (cons? V2392) (let Semantics (hd V2392) (let V2393 (shen.lazyderef (tl V2392) V3031) (if (cons? V2393) (let V2394 (shen.lazyderef (hd V2393) V3031) (if (= where V2394) (let V2395 (shen.lazyderef (tl V2393) V3031) (if (cons? V2395) (let G (hd V2395) (let V2396 (shen.lazyderef (tl V2395) V3031) (if (= () V2396) (do (shen.incinfs) (cut Throwcontrol V3031 (freeze (bind V3029 (cons where (cons (shen.lazyderef G V3031) (cons (shen.lazyderef Semantics V3031) ()))) V3031 V3032)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2382 V3031) Result))) false))) (if (= Case false) (let V2397 (shen.lazyderef V3028 V3031) (if (cons? V2397) (let X2369 (hd V2397) (let Syntax (tl V2397) (let V2398 (shen.lazyderef V3030 V3031) (if (cons? V2398) (let X (hd V2398) (let Rule (tl V2398) (do (shen.incinfs) (unify! X X2369 V3031 (freeze (shen.get-syntax+semantics Syntax V3029 Rule V3031 V3032)))))) false)))) (if (shen.pvar? V2397) (let X2369 (shen.newpv V3031) (let Syntax (shen.newpv V3031) (do (shen.bindv V2397 (cons X2369 Syntax) V3031) (let Result (let V2399 (shen.lazyderef V3030 V3031) (if (cons? V2399) (let X (hd V2399) (let Rule (tl V2399) (do (shen.incinfs) (unify! X X2369 V3031 (freeze (shen.get-syntax+semantics Syntax V3029 Rule V3031 V3032)))))) false)) (do (shen.unbindv V2397 V3031) Result))))) false))) Case)) Case)))))
|
158
158
|
|
159
|
-
(defun shen.syntax-check (
|
159
|
+
(defun shen.syntax-check (V3033 V3034 V3035 V3036 V3037) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2366 (shen.lazyderef V3033 V3036) (if (= () V2366) (do (shen.incinfs) (thaw V3037)) false)) (if (= Case false) (let Case (let V2367 (shen.lazyderef V3033 V3036) (if (cons? V2367) (let X (hd V2367) (let Syntax (tl V2367) (let C (shen.newpv V3036) (let X&& (shen.newpv V3036) (let B (shen.newpv V3036) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V3036)) V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V3035 V3036 (freeze (cut Throwcontrol V3036 (freeze (bind X&& (concat && (shen.lazyderef X V3036)) V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V3034 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V3035) V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.syntax-check Syntax V3034 V3035 V3036 V3037))))))))))))))))))))))) false)) (if (= Case false) (let V2368 (shen.lazyderef V3033 V3036) (if (cons? V2368) (let X (hd V2368) (let Syntax (tl V2368) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V3034 ()))) V3035 V3036 (freeze (cut Throwcontrol V3036 (freeze (shen.syntax-check Syntax V3034 V3035 V3036 V3037)))))))) false)) Case)) Case)))))
|
160
160
|
|
161
|
-
(defun shen.semantics-check (
|
161
|
+
(defun shen.semantics-check (V3038 V3039 V3040 V3041 V3042) (let Semantics* (shen.newpv V3041) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V3038 V3041))) V3041 (freeze (shen.t* (cons Semantics* (cons : (cons V3039 ()))) V3040 V3041 V3042))))))
|
162
162
|
|
163
|
-
(defun shen.rename-semantics (
|
163
|
+
(defun shen.rename-semantics (V3043) (cond ((cons? V3043) (cons (shen.rename-semantics (hd V3043)) (shen.rename-semantics (tl V3043)))) ((shen.grammar_symbol? V3043) (cons shen.<-sem (cons V3043 ()))) (true V3043)))
|
164
164
|
|
165
165
|
|
166
166
|
|
@@ -51,9 +51,9 @@
|
|
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 (
|
54
|
+
(defun version (V2280) (set *version* V2280))
|
55
55
|
|
56
|
-
(version "version
|
56
|
+
(version "version 12")
|
57
57
|
|
58
58
|
(defun shen.credits () (do (shen.prhush "
|
59
59
|
Shen 2010, copyright (C) 2010 Mark Tarver
|
@@ -65,27 +65,27 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
65
65
|
|
66
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 ()))))))))))
|
67
67
|
|
68
|
-
(defun shen.multiple-set (
|
68
|
+
(defun shen.multiple-set (V2281) (cond ((= () V2281) ()) ((and (cons? V2281) (cons? (tl V2281))) (do (set (hd V2281) (hd (tl V2281))) (shen.multiple-set (tl (tl V2281))))) (true (shen.sys-error shen.multiple-set))))
|
69
69
|
|
70
|
-
(defun destroy (
|
70
|
+
(defun destroy (V2282) (declare V2282 ()))
|
71
71
|
|
72
72
|
(set shen.*history* ())
|
73
73
|
|
74
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)))))))
|
75
75
|
|
76
|
-
(defun shen.retrieve-from-history-if-needed (
|
76
|
+
(defun shen.retrieve-from-history-if-needed (V2292 V2293) (cond ((and (tuple? V2292) (and (cons? (snd V2292)) (and (cons? (tl (snd V2292))) (and (= () (tl (tl (snd V2292)))) (and (cons? V2293) (and (= (hd (snd V2292)) (shen.exclamation)) (= (hd (tl (snd V2292))) (shen.exclamation)))))))) (let PastPrint (shen.prbytes (snd (hd V2293))) (hd V2293))) ((and (tuple? V2292) (and (cons? (snd V2292)) (= (hd (snd V2292)) (shen.exclamation)))) (let Key? (shen.make-key (tl (snd V2292)) V2293) (let Find (head (shen.find-past-inputs Key? V2293)) (let PastPrint (shen.prbytes (snd Find)) Find)))) ((and (tuple? V2292) (and (cons? (snd V2292)) (and (= () (tl (snd V2292))) (= (hd (snd V2292)) (shen.percent))))) (do (shen.print-past-inputs (lambda X true) (reverse V2293) 0) (abort))) ((and (tuple? V2292) (and (cons? (snd V2292)) (= (hd (snd V2292)) (shen.percent)))) (let Key? (shen.make-key (tl (snd V2292)) V2293) (let Pastprint (shen.print-past-inputs Key? (reverse V2293) 0) (abort)))) (true V2292)))
|
77
77
|
|
78
78
|
(defun shen.percent () 37)
|
79
79
|
|
80
80
|
(defun shen.exclamation () 33)
|
81
81
|
|
82
|
-
(defun shen.prbytes (
|
82
|
+
(defun shen.prbytes (V2294) (do (map (lambda Byte (pr (n->string Byte) (stoutput))) V2294) (nl 1)))
|
83
83
|
|
84
|
-
(defun shen.update_history (
|
84
|
+
(defun shen.update_history (V2295 V2296) (set shen.*history* (cons V2295 V2296)))
|
85
85
|
|
86
86
|
(defun shen.toplineread () (shen.toplineread_loop (read-byte (stinput)) ()))
|
87
87
|
|
88
|
-
(defun shen.toplineread_loop (
|
88
|
+
(defun shen.toplineread_loop (V2298 V2299) (cond ((= V2298 (shen.hat)) (simple-error "line read aborted")) ((element? V2298 (cons (shen.newline) (cons (shen.carriage-return) ()))) (let Line (compile shen.<st_input> V2299 (lambda E shen.nextline)) (if (or (= Line shen.nextline) (empty? Line)) (shen.toplineread_loop (read-byte (stinput)) (append V2299 (cons V2298 ()))) (@p Line V2299)))) (true (shen.toplineread_loop (read-byte (stinput)) (append V2299 (cons V2298 ()))))))
|
89
89
|
|
90
90
|
(defun shen.hat () 94)
|
91
91
|
|
@@ -93,7 +93,7 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
93
93
|
|
94
94
|
(defun shen.carriage-return () 13)
|
95
95
|
|
96
|
-
(defun tc (
|
96
|
+
(defun tc (V2304) (cond ((= + V2304) (set shen.*tc* true)) ((= - V2304) (set shen.*tc* false)) (true (simple-error "tc expects a + or -"))))
|
97
97
|
|
98
98
|
(defun shen.prompt () (if (value shen.*tc*) (shen.prhush (cn "
|
99
99
|
|
@@ -101,16 +101,16 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
101
101
|
|
102
102
|
(" (shen.app (length (value shen.*history*)) "-) " shen.a)) (stoutput))))
|
103
103
|
|
104
|
-
(defun shen.toplevel (
|
104
|
+
(defun shen.toplevel (V2305) (shen.toplevel_evaluate V2305 (value shen.*tc*)))
|
105
105
|
|
106
|
-
(defun shen.find-past-inputs (
|
106
|
+
(defun shen.find-past-inputs (V2306 V2307) (let F (shen.find V2306 V2307) (if (empty? F) (simple-error "input not found
|
107
107
|
") F)))
|
108
108
|
|
109
|
-
(defun shen.make-key (
|
109
|
+
(defun shen.make-key (V2308 V2309) (let Atom (hd (compile shen.<st_input> V2308 (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
|
110
110
|
" shen.s))) (simple-error "parse error
|
111
|
-
"))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse
|
111
|
+
"))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse V2309)))) (lambda X (shen.prefix? V2308 (shen.trim-gubbins (snd X)))))))
|
112
112
|
|
113
|
-
(defun shen.trim-gubbins (
|
113
|
+
(defun shen.trim-gubbins (V2310) (cond ((and (cons? V2310) (= (hd V2310) (shen.space))) (shen.trim-gubbins (tl V2310))) ((and (cons? V2310) (= (hd V2310) (shen.newline))) (shen.trim-gubbins (tl V2310))) ((and (cons? V2310) (= (hd V2310) (shen.carriage-return))) (shen.trim-gubbins (tl V2310))) ((and (cons? V2310) (= (hd V2310) (shen.tab))) (shen.trim-gubbins (tl V2310))) ((and (cons? V2310) (= (hd V2310) (shen.left-round))) (shen.trim-gubbins (tl V2310))) (true V2310)))
|
114
114
|
|
115
115
|
(defun shen.space () 32)
|
116
116
|
|
@@ -118,22 +118,22 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
118
118
|
|
119
119
|
(defun shen.left-round () 40)
|
120
120
|
|
121
|
-
(defun shen.find (
|
121
|
+
(defun shen.find (V2317 V2318) (cond ((= () V2318) ()) ((and (cons? V2318) (V2317 (hd V2318))) (cons (hd V2318) (shen.find V2317 (tl V2318)))) ((cons? V2318) (shen.find V2317 (tl V2318))) (true (shen.sys-error shen.find))))
|
122
122
|
|
123
|
-
(defun shen.prefix? (
|
123
|
+
(defun shen.prefix? (V2329 V2330) (cond ((= () V2329) true) ((and (cons? V2329) (and (cons? V2330) (= (hd V2330) (hd V2329)))) (shen.prefix? (tl V2329) (tl V2330))) (true false)))
|
124
124
|
|
125
|
-
(defun shen.print-past-inputs (
|
125
|
+
(defun shen.print-past-inputs (V2340 V2341 V2342) (cond ((= () V2341) _) ((and (cons? V2341) (not (V2340 (hd V2341)))) (shen.print-past-inputs V2340 (tl V2341) (+ V2342 1))) ((and (cons? V2341) (tuple? (hd V2341))) (do (shen.prhush (shen.app V2342 ". " shen.a) (stoutput)) (do (shen.prbytes (snd (hd V2341))) (shen.print-past-inputs V2340 (tl V2341) (+ V2342 1))))) (true (shen.sys-error shen.print-past-inputs))))
|
126
126
|
|
127
|
-
(defun shen.toplevel_evaluate (
|
127
|
+
(defun shen.toplevel_evaluate (V2343 V2344) (cond ((and (cons? V2343) (and (cons? (tl V2343)) (and (= : (hd (tl V2343))) (and (cons? (tl (tl V2343))) (and (= () (tl (tl (tl V2343)))) (= true V2344)))))) (shen.typecheck-and-evaluate (hd V2343) (hd (tl (tl V2343))))) ((and (cons? V2343) (cons? (tl V2343))) (do (shen.toplevel_evaluate (cons (hd V2343) ()) V2344) (do (nl 1) (shen.toplevel_evaluate (tl V2343) V2344)))) ((and (cons? V2343) (and (= () (tl V2343)) (= true V2344))) (shen.typecheck-and-evaluate (hd V2343) (gensym A))) ((and (cons? V2343) (and (= () (tl V2343)) (= false V2344))) (let Eval (shen.eval-without-macros (hd V2343)) (print Eval))) (true (shen.sys-error shen.toplevel_evaluate))))
|
128
128
|
|
129
|
-
(defun shen.typecheck-and-evaluate (
|
130
|
-
") (let Eval (shen.eval-without-macros
|
129
|
+
(defun shen.typecheck-and-evaluate (V2345 V2346) (let Typecheck (shen.typecheck V2345 V2346) (if (= Typecheck false) (simple-error "type error
|
130
|
+
") (let Eval (shen.eval-without-macros V2345) (let Type (shen.pretty-type Typecheck) (shen.prhush (shen.app Eval (cn " : " (shen.app Type "" shen.r)) shen.s) (stoutput)))))))
|
131
131
|
|
132
|
-
(defun shen.pretty-type (
|
132
|
+
(defun shen.pretty-type (V2347) (shen.mult_subst (value shen.*alphabet*) (shen.extract-pvars V2347) V2347))
|
133
133
|
|
134
|
-
(defun shen.extract-pvars (
|
134
|
+
(defun shen.extract-pvars (V2352) (cond ((shen.pvar? V2352) (cons V2352 ())) ((cons? V2352) (union (shen.extract-pvars (hd V2352)) (shen.extract-pvars (tl V2352)))) (true ())))
|
135
135
|
|
136
|
-
(defun shen.mult_subst (
|
136
|
+
(defun shen.mult_subst (V2357 V2358 V2359) (cond ((= () V2357) V2359) ((= () V2358) V2359) ((and (cons? V2357) (cons? V2358)) (shen.mult_subst (tl V2357) (tl V2358) (subst (hd V2357) (hd V2358) V2359))) (true (shen.sys-error shen.mult_subst))))
|
137
137
|
|
138
138
|
|
139
139
|
|
@@ -47,57 +47,57 @@
|
|
47
47
|
* explains this license in full. *
|
48
48
|
* *
|
49
49
|
*****************************************************************************************
|
50
|
-
"(defun shen.f_error (
|
51
|
-
" shen.a)) (stoutput)) (do (if (and (not (shen.tracked?
|
50
|
+
"(defun shen.f_error (V2062) (do (shen.prhush (cn "partial function " (shen.app V2062 ";
|
51
|
+
" shen.a)) (stoutput)) (do (if (and (not (shen.tracked? V2062)) (y-or-n? (cn "track " (shen.app V2062 "? " shen.a)))) (shen.track-function (ps V2062)) shen.ok) (simple-error "aborted"))))
|
52
52
|
|
53
|
-
(defun shen.tracked? (
|
53
|
+
(defun shen.tracked? (V2063) (element? V2063 (value shen.*tracking*)))
|
54
54
|
|
55
|
-
(defun track (
|
55
|
+
(defun track (V2064) (let Source (ps V2064) (shen.track-function Source)))
|
56
56
|
|
57
|
-
(defun shen.track-function (
|
57
|
+
(defun shen.track-function (V2065) (cond ((and (cons? V2065) (and (= defun (hd V2065)) (and (cons? (tl V2065)) (and (cons? (tl (tl V2065))) (and (cons? (tl (tl (tl V2065)))) (= () (tl (tl (tl (tl V2065)))))))))) (let KL (cons defun (cons (hd (tl V2065)) (cons (hd (tl (tl V2065))) (cons (shen.insert-tracking-code (hd (tl V2065)) (hd (tl (tl V2065))) (hd (tl (tl (tl V2065))))) ())))) (let Ob (eval KL) (let Tr (set shen.*tracking* (cons Ob (value shen.*tracking*))) Ob)))) (true (shen.sys-error shen.track-function))))
|
58
58
|
|
59
|
-
(defun shen.insert-tracking-code (
|
59
|
+
(defun shen.insert-tracking-code (V2066 V2067 V2068) (cons do (cons (cons set (cons shen.*call* (cons (cons + (cons (cons value (cons shen.*call* ())) (cons 1 ()))) ()))) (cons (cons do (cons (cons shen.input-track (cons (cons value (cons shen.*call* ())) (cons V2066 (cons (shen.cons_form V2067) ())))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons (cons let (cons Result (cons V2068 (cons (cons do (cons (cons shen.output-track (cons (cons value (cons shen.*call* ())) (cons V2066 (cons Result ())))) (cons (cons do (cons (cons set (cons shen.*call* (cons (cons - (cons (cons value (cons shen.*call* ())) (cons 1 ()))) ()))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons Result ()))) ()))) ()))) ())))) ()))) ()))) ()))))
|
60
60
|
|
61
61
|
(set shen.*step* false)
|
62
62
|
|
63
|
-
(defun step (
|
63
|
+
(defun step (V2073) (cond ((= + V2073) (set shen.*step* true)) ((= - V2073) (set shen.*step* false)) (true (simple-error "step expects a + or a -.
|
64
64
|
"))))
|
65
65
|
|
66
|
-
(defun spy (
|
66
|
+
(defun spy (V2078) (cond ((= + V2078) (set shen.*spy* true)) ((= - V2078) (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 (
|
71
|
+
(defun shen.check-byte (V2083) (cond ((= V2083 (shen.hat)) (simple-error "aborted")) (true true)))
|
72
72
|
|
73
|
-
(defun shen.input-track (
|
74
|
-
" (shen.app (shen.spaces
|
75
|
-
" (shen.app (shen.spaces
|
73
|
+
(defun shen.input-track (V2084 V2085 V2086) (do (shen.prhush (cn "
|
74
|
+
" (shen.app (shen.spaces V2084) (cn "<" (shen.app V2084 (cn "> Inputs to " (shen.app V2085 (cn "
|
75
|
+
" (shen.app (shen.spaces V2084) "" shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)) (shen.recursively-print V2086)))
|
76
76
|
|
77
|
-
(defun shen.recursively-print (
|
77
|
+
(defun shen.recursively-print (V2087) (cond ((= () V2087) (shen.prhush " ==>" (stoutput))) ((cons? V2087) (do (print (hd V2087)) (do (shen.prhush ", " (stoutput)) (shen.recursively-print (tl V2087))))) (true (shen.sys-error shen.recursively-print))))
|
78
78
|
|
79
|
-
(defun shen.spaces (
|
79
|
+
(defun shen.spaces (V2088) (cond ((= 0 V2088) "") (true (cn " " (shen.spaces (- V2088 1))))))
|
80
80
|
|
81
|
-
(defun shen.output-track (
|
82
|
-
" (shen.app (shen.spaces
|
83
|
-
" (shen.app (shen.spaces
|
81
|
+
(defun shen.output-track (V2089 V2090 V2091) (shen.prhush (cn "
|
82
|
+
" (shen.app (shen.spaces V2089) (cn "<" (shen.app V2089 (cn "> Output from " (shen.app V2090 (cn "
|
83
|
+
" (shen.app (shen.spaces V2089) (cn "==> " (shen.app V2091 "" shen.s)) shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)))
|
84
84
|
|
85
|
-
(defun untrack (
|
85
|
+
(defun untrack (V2092) (eval (ps V2092)))
|
86
86
|
|
87
|
-
(defun profile (
|
87
|
+
(defun profile (V2093) (shen.profile-help (ps V2093)))
|
88
88
|
|
89
|
-
(defun shen.profile-help (
|
89
|
+
(defun shen.profile-help (V2098) (cond ((and (cons? V2098) (and (= defun (hd V2098)) (and (cons? (tl V2098)) (and (cons? (tl (tl V2098))) (and (cons? (tl (tl (tl V2098)))) (= () (tl (tl (tl (tl V2098)))))))))) (let G (gensym shen.f) (let Profile (cons defun (cons (hd (tl V2098)) (cons (hd (tl (tl V2098))) (cons (shen.profile-func (hd (tl V2098)) (hd (tl (tl V2098))) (cons G (hd (tl (tl V2098))))) ())))) (let Def (cons defun (cons G (cons (hd (tl (tl V2098))) (cons (subst G (hd (tl V2098)) (hd (tl (tl (tl V2098))))) ())))) (let CompileProfile (shen.eval-without-macros Profile) (let CompileG (shen.eval-without-macros Def) (hd (tl V2098)))))))) (true (simple-error "Cannot profile.
|
90
90
|
"))))
|
91
91
|
|
92
|
-
(defun unprofile (
|
92
|
+
(defun unprofile (V2099) (untrack V2099))
|
93
93
|
|
94
|
-
(defun shen.profile-func (
|
94
|
+
(defun shen.profile-func (V2100 V2101 V2102) (cons let (cons Start (cons (cons get-time (cons run ())) (cons (cons let (cons Result (cons V2102 (cons (cons let (cons Finish (cons (cons - (cons (cons get-time (cons run ())) (cons Start ()))) (cons (cons let (cons Record (cons (cons shen.put-profile (cons V2100 (cons (cons + (cons (cons shen.get-profile (cons V2100 ())) (cons Finish ()))) ()))) (cons Result ())))) ())))) ())))) ())))))
|
95
95
|
|
96
|
-
(defun profile-results (
|
96
|
+
(defun profile-results (V2103) (let Results (shen.get-profile V2103) (let Initialise (shen.put-profile V2103 0) (@p V2103 Results))))
|
97
97
|
|
98
|
-
(defun shen.get-profile (
|
98
|
+
(defun shen.get-profile (V2104) (trap-error (get V2104 profile (value *property-vector*)) (lambda E 0)))
|
99
99
|
|
100
|
-
(defun shen.put-profile (
|
100
|
+
(defun shen.put-profile (V2105 V2106) (put V2105 profile V2106 (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 (
|
50
|
+
"(defun declare (V2107 V2108) (let Record (set shen.*signedfuncs* (cons (cons V2107 V2108) (value shen.*signedfuncs*))) (let Variancy (trap-error (shen.variancy-test V2107 V2108) (lambda E shen.skip)) (let Type (shen.rcons_form (shen.demodulate V2108)) (let F* (concat shen.type-signature-of- V2107) (let Parameters (shen.parameters 1) (let Clause (cons (cons F* (cons X ())) (cons :- (cons (cons (cons unify! (cons X (cons Type ()))) ()) ()))) (let AUM_instruction (shen.aum Clause Parameters) (let Code (shen.aum_to_shen AUM_instruction) (let ShenDef (cons define (cons F* (append Parameters (append (cons ProcessN (cons Continuation ())) (cons -> (cons Code ())))))) (let Eval (shen.eval-without-macros ShenDef) V2107)))))))))))
|
51
51
|
|
52
|
-
(defun shen.demodulate (
|
52
|
+
(defun shen.demodulate (V2109) (fix shen.demodh V2109))
|
53
53
|
|
54
|
-
(defun shen.demodh (
|
54
|
+
(defun shen.demodh (V2110) (cond ((cons? V2110) (map shen.demodh V2110)) (true (shen.demod-atom V2110))))
|
55
55
|
|
56
|
-
(defun shen.demod-atom (
|
56
|
+
(defun shen.demod-atom (V2111) (let Val (assoc V2111 (value shen.*synonyms*)) (if (empty? Val) V2111 (tl Val))))
|
57
57
|
|
58
|
-
(defun shen.variancy-test (
|
58
|
+
(defun shen.variancy-test (V2112 V2113) (let TypeF (shen.typecheck V2112 B) (let Check (if (= symbol TypeF) shen.skip (if (shen.variant? TypeF V2113) shen.skip (shen.prhush (cn "warning: changing the type of " (shen.app V2112 " may create errors
|
59
59
|
" shen.a)) (stoutput)))) shen.skip)))
|
60
60
|
|
61
|
-
(defun shen.variant? (
|
61
|
+
(defun shen.variant? (V2122 V2123) (cond ((= V2123 V2122) true) ((and (cons? V2122) (and (cons? V2123) (= (hd V2123) (hd V2122)))) (shen.variant? (tl V2122) (tl V2123))) ((and (cons? V2122) (and (cons? V2123) (and (shen.pvar? (hd V2122)) (variable? (hd V2123))))) (shen.variant? (subst shen.a (hd V2122) (tl V2122)) (subst shen.a (hd V2123) (tl V2123)))) ((and (cons? V2122) (and (cons? (hd V2122)) (and (cons? V2123) (cons? (hd V2123))))) (shen.variant? (append (hd V2122) (tl V2122)) (append (hd V2123) (tl V2123)))) (true false)))
|
62
62
|
|
63
63
|
(declare absvector? (cons A (cons --> (cons boolean ()))))
|
64
64
|
|
@@ -152,6 +152,8 @@
|
|
152
152
|
|
153
153
|
(declare intersection (cons (cons list (cons A ())) (cons --> (cons (cons (cons list (cons A ())) (cons --> (cons (cons list (cons A ())) ()))) ()))))
|
154
154
|
|
155
|
+
(declare kill (cons --> (cons A ())))
|
156
|
+
|
155
157
|
(declare length (cons (cons list (cons A ())) (cons --> (cons number ()))))
|
156
158
|
|
157
159
|
(declare limit (cons (cons vector (cons A ())) (cons --> (cons number ()))))
|
@@ -254,7 +256,7 @@
|
|
254
256
|
|
255
257
|
(declare tc (cons symbol (cons --> (cons boolean ()))))
|
256
258
|
|
257
|
-
(declare tc? (cons
|
259
|
+
(declare tc? (cons --> (cons boolean ())))
|
258
260
|
|
259
261
|
(declare thaw (cons (cons lazy (cons A ())) (cons --> (cons A ()))))
|
260
262
|
|
@@ -47,53 +47,53 @@
|
|
47
47
|
* explains this license in full. *
|
48
48
|
* *
|
49
49
|
*****************************************************************************************
|
50
|
-
"(defun print (
|
50
|
+
"(defun print (V2210) (let String (shen.insert V2210 "~S") (let Print (shen.prhush String (stoutput)) V2210)))
|
51
51
|
|
52
|
-
(defun shen.prhush (
|
52
|
+
(defun shen.prhush (V2211 V2212) (if (value *hush*) V2211 (pr V2211 V2212)))
|
53
53
|
|
54
|
-
(defun shen.mkstr (
|
54
|
+
(defun shen.mkstr (V2213 V2214) (cond ((string? V2213) (shen.mkstr-l (shen.proc-nl V2213) V2214)) (true (shen.mkstr-r (cons shen.proc-nl (cons V2213 ())) V2214))))
|
55
55
|
|
56
|
-
(defun shen.mkstr-l (
|
56
|
+
(defun shen.mkstr-l (V2215 V2216) (cond ((= () V2216) V2215) ((cons? V2216) (shen.mkstr-l (shen.insert-l (hd V2216) V2215) (tl V2216))) (true (shen.sys-error shen.mkstr-l))))
|
57
57
|
|
58
|
-
(defun shen.insert-l (
|
58
|
+
(defun shen.insert-l (V2219 V2220) (cond ((= "" V2220) "") ((and (shen.+string? V2220) (and (= "~" (pos V2220 0)) (and (shen.+string? (tlstr V2220)) (= "A" (pos (tlstr V2220) 0))))) (cons shen.app (cons V2219 (cons (tlstr (tlstr V2220)) (cons shen.a ()))))) ((and (shen.+string? V2220) (and (= "~" (pos V2220 0)) (and (shen.+string? (tlstr V2220)) (= "R" (pos (tlstr V2220) 0))))) (cons shen.app (cons V2219 (cons (tlstr (tlstr V2220)) (cons shen.r ()))))) ((and (shen.+string? V2220) (and (= "~" (pos V2220 0)) (and (shen.+string? (tlstr V2220)) (= "S" (pos (tlstr V2220) 0))))) (cons shen.app (cons V2219 (cons (tlstr (tlstr V2220)) (cons shen.s ()))))) ((shen.+string? V2220) (shen.factor-cn (cons cn (cons (pos V2220 0) (cons (shen.insert-l V2219 (tlstr V2220)) ()))))) ((and (cons? V2220) (and (= cn (hd V2220)) (and (cons? (tl V2220)) (and (cons? (tl (tl V2220))) (= () (tl (tl (tl V2220)))))))) (cons cn (cons (hd (tl V2220)) (cons (shen.insert-l V2219 (hd (tl (tl V2220)))) ())))) ((and (cons? V2220) (and (= shen.app (hd V2220)) (and (cons? (tl V2220)) (and (cons? (tl (tl V2220))) (and (cons? (tl (tl (tl V2220)))) (= () (tl (tl (tl (tl V2220)))))))))) (cons shen.app (cons (hd (tl V2220)) (cons (shen.insert-l V2219 (hd (tl (tl V2220)))) (tl (tl (tl V2220))))))) (true (shen.sys-error shen.insert-l))))
|
59
59
|
|
60
|
-
(defun shen.factor-cn (
|
60
|
+
(defun shen.factor-cn (V2221) (cond ((and (cons? V2221) (and (= cn (hd V2221)) (and (cons? (tl V2221)) (and (cons? (tl (tl V2221))) (and (cons? (hd (tl (tl V2221)))) (and (= cn (hd (hd (tl (tl V2221))))) (and (cons? (tl (hd (tl (tl V2221))))) (and (cons? (tl (tl (hd (tl (tl V2221)))))) (and (= () (tl (tl (tl (hd (tl (tl V2221))))))) (and (= () (tl (tl (tl V2221)))) (and (string? (hd (tl V2221))) (string? (hd (tl (hd (tl (tl V2221))))))))))))))))) (cons cn (cons (cn (hd (tl V2221)) (hd (tl (hd (tl (tl V2221)))))) (tl (tl (hd (tl (tl V2221)))))))) (true V2221)))
|
61
61
|
|
62
|
-
(defun shen.proc-nl (
|
62
|
+
(defun shen.proc-nl (V2222) (cond ((= "" V2222) "") ((and (shen.+string? V2222) (and (= "~" (pos V2222 0)) (and (shen.+string? (tlstr V2222)) (= "%" (pos (tlstr V2222) 0))))) (cn (n->string 10) (shen.proc-nl (tlstr (tlstr V2222))))) ((shen.+string? V2222) (cn (pos V2222 0) (shen.proc-nl (tlstr V2222)))) (true (shen.sys-error shen.proc-nl))))
|
63
63
|
|
64
|
-
(defun shen.mkstr-r (
|
64
|
+
(defun shen.mkstr-r (V2223 V2224) (cond ((= () V2224) V2223) ((cons? V2224) (shen.mkstr-r (cons shen.insert (cons (hd V2224) (cons V2223 ()))) (tl V2224))) (true (shen.sys-error shen.mkstr-r))))
|
65
65
|
|
66
|
-
(defun shen.insert (
|
66
|
+
(defun shen.insert (V2225 V2226) (shen.insert-h V2225 V2226 ""))
|
67
67
|
|
68
|
-
(defun shen.insert-h (
|
68
|
+
(defun shen.insert-h (V2229 V2230 V2231) (cond ((= "" V2230) V2231) ((and (shen.+string? V2230) (and (= "~" (pos V2230 0)) (and (shen.+string? (tlstr V2230)) (= "A" (pos (tlstr V2230) 0))))) (cn V2231 (shen.app V2229 (tlstr (tlstr V2230)) shen.a))) ((and (shen.+string? V2230) (and (= "~" (pos V2230 0)) (and (shen.+string? (tlstr V2230)) (= "R" (pos (tlstr V2230) 0))))) (cn V2231 (shen.app V2229 (tlstr (tlstr V2230)) shen.r))) ((and (shen.+string? V2230) (and (= "~" (pos V2230 0)) (and (shen.+string? (tlstr V2230)) (= "S" (pos (tlstr V2230) 0))))) (cn V2231 (shen.app V2229 (tlstr (tlstr V2230)) shen.s))) ((shen.+string? V2230) (shen.insert-h V2229 (tlstr V2230) (cn V2231 (pos V2230 0)))) (true (shen.sys-error shen.insert-h))))
|
69
69
|
|
70
|
-
(defun shen.app (
|
70
|
+
(defun shen.app (V2232 V2233 V2234) (cn (shen.arg->str V2232 V2234) V2233))
|
71
71
|
|
72
|
-
(defun shen.arg->str (
|
72
|
+
(defun shen.arg->str (V2240 V2241) (cond ((= V2240 (fail)) "...") ((shen.list? V2240) (shen.list->str V2240 V2241)) ((string? V2240) (shen.str->str V2240 V2241)) ((absvector? V2240) (shen.vector->str V2240 V2241)) (true (shen.atom->str V2240))))
|
73
73
|
|
74
|
-
(defun shen.list->str (
|
74
|
+
(defun shen.list->str (V2242 V2243) (cond ((= shen.r V2243) (@s "(" (@s (shen.iter-list V2242 shen.r (shen.maxseq)) ")"))) (true (@s "[" (@s (shen.iter-list V2242 V2243 (shen.maxseq)) "]")))))
|
75
75
|
|
76
76
|
(defun shen.maxseq () (value *maximum-print-sequence-size*))
|
77
77
|
|
78
|
-
(defun shen.iter-list (
|
78
|
+
(defun shen.iter-list (V2254 V2255 V2256) (cond ((= () V2254) "") ((= 0 V2256) "... etc") ((and (cons? V2254) (= () (tl V2254))) (shen.arg->str (hd V2254) V2255)) ((cons? V2254) (@s (shen.arg->str (hd V2254) V2255) (@s " " (shen.iter-list (tl V2254) V2255 (- V2256 1))))) (true (@s "|" (@s " " (shen.arg->str V2254 V2255))))))
|
79
79
|
|
80
|
-
(defun shen.str->str (
|
80
|
+
(defun shen.str->str (V2261 V2262) (cond ((= shen.a V2262) V2261) (true (@s (n->string 34) (@s V2261 (n->string 34))))))
|
81
81
|
|
82
|
-
(defun shen.vector->str (
|
82
|
+
(defun shen.vector->str (V2263 V2264) (if (shen.print-vector? V2263) ((<-address V2263 0) V2263) (if (vector? V2263) (@s "<" (@s (shen.iter-vector V2263 1 V2264 (shen.maxseq)) ">")) (@s "<" (@s "<" (@s (shen.iter-vector V2263 0 V2264 (shen.maxseq)) ">>"))))))
|
83
83
|
|
84
|
-
(defun shen.print-vector? (
|
84
|
+
(defun shen.print-vector? (V2265) (let Zero (<-address V2265 0) (if (= Zero shen.tuple) true (if (= Zero shen.pvar) true (if (not (number? Zero)) (shen.fbound? Zero) false)))))
|
85
85
|
|
86
|
-
(defun shen.fbound? (
|
86
|
+
(defun shen.fbound? (V2266) (trap-error (do (ps V2266) true) (lambda E false)))
|
87
87
|
|
88
|
-
(defun shen.tuple (
|
88
|
+
(defun shen.tuple (V2267) (cn "(@p " (shen.app (<-address V2267 1) (cn " " (shen.app (<-address V2267 2) ")" shen.s)) shen.s)))
|
89
89
|
|
90
|
-
(defun shen.iter-vector (
|
90
|
+
(defun shen.iter-vector (V2274 V2275 V2276 V2277) (cond ((= 0 V2277) "... etc") (true (let Item (trap-error (<-address V2274 V2275) (lambda E shen.out-of-bounds)) (let Next (trap-error (<-address V2274 (+ V2275 1)) (lambda E shen.out-of-bounds)) (if (= Item shen.out-of-bounds) "" (if (= Next shen.out-of-bounds) (shen.arg->str Item V2276) (@s (shen.arg->str Item V2276) (@s " " (shen.iter-vector V2274 (+ V2275 1) V2276 (- V2277 1)))))))))))
|
91
91
|
|
92
|
-
(defun shen.atom->str (
|
92
|
+
(defun shen.atom->str (V2278) (trap-error (str V2278) (lambda E (shen.funexstring))))
|
93
93
|
|
94
94
|
(defun shen.funexstring () (@s "" (@s "f" (@s "u" (@s "n" (@s "e" (@s (shen.arg->str (gensym (intern "x")) shen.a) "")))))))
|
95
95
|
|
96
|
-
(defun shen.list? (
|
96
|
+
(defun shen.list? (V2279) (or (empty? V2279) (cons? V2279)))
|
97
97
|
|
98
98
|
|
99
99
|
|