shen-ruby 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +7 -0
- data/README.md +5 -5
- data/Rakefile +10 -3
- data/lib/shen_ruby/version.rb +1 -1
- data/shen-ruby.gemspec +2 -2
- data/shen/release/klambda/core.kl +63 -63
- data/shen/release/klambda/declarations.kl +7 -7
- data/shen/release/klambda/load.kl +15 -15
- data/shen/release/klambda/macros.kl +33 -33
- data/shen/release/klambda/prolog.kl +97 -97
- data/shen/release/klambda/reader.kl +83 -83
- data/shen/release/klambda/sequent.kl +55 -55
- data/shen/release/klambda/sys.kl +101 -101
- data/shen/release/klambda/t-star.kl +41 -41
- data/shen/release/klambda/toplevel.kl +21 -21
- data/shen/release/klambda/track.kl +25 -25
- data/shen/release/klambda/types.kl +4 -4
- data/shen/release/klambda/writer.kl +25 -25
- data/shen/release/klambda/yacc.kl +28 -28
- data/shen/release/license.pdf +0 -0
- data/shen/release/test_programs/bubble_version_2.shen +1 -1
- data/shen/release/test_programs/depth_.shen +1 -1
- data/shen/release/test_programs/interpreter.shen +1 -1
- data/shen/release/test_programs/metaprog.shen +1 -1
- data/shen/release/test_programs/semantic_net.shen +1 -1
- data/shen/release/test_programs/tests.shen +12 -12
- metadata +5 -5
@@ -23,101 +23,101 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
23
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
24
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
25
25
|
|
26
|
-
(defun shen.typecheck (
|
26
|
+
(defun shen.typecheck (V2077 V2078) (let Curry (shen.curry V2077) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2078)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
|
27
27
|
|
28
|
-
(defun shen.curry (
|
28
|
+
(defun shen.curry (V2079) (cond ((and (cons? V2079) (shen.special? (hd V2079))) (cons (hd V2079) (map (lambda V1754 (shen.curry V1754)) (tl V2079)))) ((and (cons? V2079) (and (cons? (tl V2079)) (shen.extraspecial? (hd V2079)))) V2079) ((and (cons? V2079) (and (= type (hd V2079)) (and (cons? (tl V2079)) (and (cons? (tl (tl V2079))) (= () (tl (tl (tl V2079)))))))) (cons type (cons (shen.curry (hd (tl V2079))) (tl (tl V2079))))) ((and (cons? V2079) (and (cons? (tl V2079)) (cons? (tl (tl V2079))))) (shen.curry (cons (cons (hd V2079) (cons (hd (tl V2079)) ())) (tl (tl V2079))))) ((and (cons? V2079) (and (cons? (tl V2079)) (= () (tl (tl V2079))))) (cons (shen.curry (hd V2079)) (cons (shen.curry (hd (tl V2079))) ()))) (true V2079)))
|
29
29
|
|
30
|
-
(defun shen.special? (
|
30
|
+
(defun shen.special? (V2080) (element? V2080 (value shen.*special*)))
|
31
31
|
|
32
|
-
(defun shen.extraspecial? (
|
32
|
+
(defun shen.extraspecial? (V2081) (element? V2081 (value shen.*extraspecial*)))
|
33
33
|
|
34
|
-
(defun shen.t* (
|
34
|
+
(defun shen.t* (V2082 V2083 V2084 V2085) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2084) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2084 (freeze (bind Error (shen.errormaxinfs) V2084 V2085))))) (if (= Case false) (let Case (let V2071 (shen.lazyderef V2082 V2084) (if (= fail V2071) (do (shen.incinfs) (cut Throwcontrol V2084 (freeze (shen.prolog-failure V2084 V2085)))) false)) (if (= Case false) (let Case (let V2072 (shen.lazyderef V2082 V2084) (if (cons? V2072) (let X (hd V2072) (let V2073 (shen.lazyderef (tl V2072) V2084) (if (cons? V2073) (let V2074 (shen.lazyderef (hd V2073) V2084) (if (= : V2074) (let V2075 (shen.lazyderef (tl V2073) V2084) (if (cons? V2075) (let A (hd V2075) (let V2076 (shen.lazyderef (tl V2075) V2084) (if (= () V2076) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2084 (freeze (cut Throwcontrol V2084 (freeze (shen.th* X A V2083 V2084 V2085)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2084) (do (shen.incinfs) (shen.show V2082 V2083 V2084 (freeze (bind Datatypes (value shen.*datatypes*) V2084 (freeze (shen.udefs* V2082 V2083 Datatypes V2084 V2085))))))) Case)) Case)) Case)))))
|
35
35
|
|
36
36
|
(defun shen.type-theory-enabled? () (value shen.*shen-type-theory-enabled?*))
|
37
37
|
|
38
|
-
(defun enable-type-theory (
|
38
|
+
(defun enable-type-theory (V2090) (cond ((= + V2090) (set shen.*shen-type-theory-enabled?* true)) ((= - V2090) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
|
39
39
|
"))))
|
40
40
|
|
41
|
-
(defun shen.prolog-failure (
|
41
|
+
(defun shen.prolog-failure (V2099 V2100) false)
|
42
42
|
|
43
43
|
(defun shen.maxinfexceeded? () (> (inferences) (value shen.*maxinferences*)))
|
44
44
|
|
45
45
|
(defun shen.errormaxinfs () (simple-error "maximum inferences exceeded~%"))
|
46
46
|
|
47
|
-
(defun shen.udefs* (
|
47
|
+
(defun shen.udefs* (V2101 V2102 V2103 V2104 V2105) (let Case (let V2067 (shen.lazyderef V2103 V2104) (if (cons? V2067) (let D (hd V2067) (do (shen.incinfs) (call (cons D (cons V2101 (cons V2102 ()))) V2104 V2105))) false)) (if (= Case false) (let V2068 (shen.lazyderef V2103 V2104) (if (cons? V2068) (let Ds (tl V2068) (do (shen.incinfs) (shen.udefs* V2101 V2102 Ds V2104 V2105))) false)) Case)))
|
48
48
|
|
49
|
-
(defun shen.th* (V2057 V2058 V2059 V2060 V2061) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2057 (cons : (cons V2058 ()))) V2059 V2060 (freeze (fwhen false V2060 V2061)))) (if (= Case false) (let Case (let F (shen.newpv V2060) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2057 V2060)) V2060 (freeze (bind F (shen.sigf (shen.lazyderef V2057 V2060)) V2060 (freeze (call (cons F (cons V2058 ())) V2060 V2061))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2057 V2058 V2060 V2061)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2057 V2058 V2059 V2060 V2061)) (if (= Case false) (let Case (let V1914 (shen.lazyderef V2057 V2060) (if (cons? V1914) (let F (hd V1914) (let V1915 (shen.lazyderef (tl V1914) V2060) (if (= () V1915) (do (shen.incinfs) (shen.th* F (cons --> (cons V2058 ())) V2059 V2060 V2061)) false))) false)) (if (= Case false) (let Case (let V1916 (shen.lazyderef V2057 V2060) (if (cons? V1916) (let F (hd V1916) (let V1917 (shen.lazyderef (tl V1916) V2060) (if (cons? V1917) (let X (hd V1917) (let V1918 (shen.lazyderef (tl V1917) V2060) (if (= () V1918) (let B (shen.newpv V2060) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2058 ()))) V2059 V2060 (freeze (shen.th* X B V2059 V2060 V2061))))) false))) false))) false)) (if (= Case false) (let Case (let V1919 (shen.lazyderef V2057 V2060) (if (cons? V1919) (let V1920 (shen.lazyderef (hd V1919) V2060) (if (= cons V1920) (let V1921 (shen.lazyderef (tl V1919) V2060) (if (cons? V1921) (let X (hd V1921) (let V1922 (shen.lazyderef (tl V1921) V2060) (if (cons? V1922) (let Y (hd V1922) (let V1923 (shen.lazyderef (tl V1922) V2060) (if (= () V1923) (let V1924 (shen.lazyderef V2058 V2060) (if (cons? V1924) (let V1925 (shen.lazyderef (hd V1924) V2060) (if (= list V1925) (let V1926 (shen.lazyderef (tl V1924) V2060) (if (cons? V1926) (let A (hd V1926) (let V1927 (shen.lazyderef (tl V1926) V2060) (if (= () V1927) (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (if (shen.pvar? V1927) (do (shen.bindv V1927 () V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1927 V2060) Result))) false)))) (if (shen.pvar? V1926) (let A (shen.newpv V2060) (do (shen.bindv V1926 (cons A ()) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1926 V2060) Result)))) false))) (if (shen.pvar? V1925) (do (shen.bindv V1925 list V2060) (let Result (let V1928 (shen.lazyderef (tl V1924) V2060) (if (cons? V1928) (let A (hd V1928) (let V1929 (shen.lazyderef (tl V1928) V2060) (if (= () V1929) (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (if (shen.pvar? V1929) (do (shen.bindv V1929 () V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1929 V2060) Result))) false)))) (if (shen.pvar? V1928) (let A (shen.newpv V2060) (do (shen.bindv V1928 (cons A ()) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1928 V2060) Result)))) false))) (do (shen.unbindv V1925 V2060) Result))) false))) (if (shen.pvar? V1924) (let A (shen.newpv V2060) (do (shen.bindv V1924 (cons list (cons A ())) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons list (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1924 V2060) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1930 (shen.lazyderef V2057 V2060) (if (cons? V1930) (let V1931 (shen.lazyderef (hd V1930) V2060) (if (= @p V1931) (let V1932 (shen.lazyderef (tl V1930) V2060) (if (cons? V1932) (let X (hd V1932) (let V1933 (shen.lazyderef (tl V1932) V2060) (if (cons? V1933) (let Y (hd V1933) (let V1934 (shen.lazyderef (tl V1933) V2060) (if (= () V1934) (let V1935 (shen.lazyderef V2058 V2060) (if (cons? V1935) (let A (hd V1935) (let V1936 (shen.lazyderef (tl V1935) V2060) (if (cons? V1936) (let V1937 (shen.lazyderef (hd V1936) V2060) (if (= * V1937) (let V1938 (shen.lazyderef (tl V1936) V2060) (if (cons? V1938) (let B (hd V1938) (let V1939 (shen.lazyderef (tl V1938) V2060) (if (= () V1939) (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (if (shen.pvar? V1939) (do (shen.bindv V1939 () V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (do (shen.unbindv V1939 V2060) Result))) false)))) (if (shen.pvar? V1938) (let B (shen.newpv V2060) (do (shen.bindv V1938 (cons B ()) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (do (shen.unbindv V1938 V2060) Result)))) false))) (if (shen.pvar? V1937) (do (shen.bindv V1937 * V2060) (let Result (let V1940 (shen.lazyderef (tl V1936) V2060) (if (cons? V1940) (let B (hd V1940) (let V1941 (shen.lazyderef (tl V1940) V2060) (if (= () V1941) (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (if (shen.pvar? V1941) (do (shen.bindv V1941 () V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (do (shen.unbindv V1941 V2060) Result))) false)))) (if (shen.pvar? V1940) (let B (shen.newpv V2060) (do (shen.bindv V1940 (cons B ()) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (do (shen.unbindv V1940 V2060) Result)))) false))) (do (shen.unbindv V1937 V2060) Result))) false))) (if (shen.pvar? V1936) (let B (shen.newpv V2060) (do (shen.bindv V1936 (cons * (cons B ())) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (do (shen.unbindv V1936 V2060) Result)))) false)))) (if (shen.pvar? V1935) (let A (shen.newpv V2060) (let B (shen.newpv V2060) (do (shen.bindv V1935 (cons A (cons * (cons B ()))) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y B V2059 V2060 V2061)))) (do (shen.unbindv V1935 V2060) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1942 (shen.lazyderef V2057 V2060) (if (cons? V1942) (let V1943 (shen.lazyderef (hd V1942) V2060) (if (= @v V1943) (let V1944 (shen.lazyderef (tl V1942) V2060) (if (cons? V1944) (let X (hd V1944) (let V1945 (shen.lazyderef (tl V1944) V2060) (if (cons? V1945) (let Y (hd V1945) (let V1946 (shen.lazyderef (tl V1945) V2060) (if (= () V1946) (let V1947 (shen.lazyderef V2058 V2060) (if (cons? V1947) (let V1948 (shen.lazyderef (hd V1947) V2060) (if (= vector V1948) (let V1949 (shen.lazyderef (tl V1947) V2060) (if (cons? V1949) (let A (hd V1949) (let V1950 (shen.lazyderef (tl V1949) V2060) (if (= () V1950) (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (if (shen.pvar? V1950) (do (shen.bindv V1950 () V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1950 V2060) Result))) false)))) (if (shen.pvar? V1949) (let A (shen.newpv V2060) (do (shen.bindv V1949 (cons A ()) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1949 V2060) Result)))) false))) (if (shen.pvar? V1948) (do (shen.bindv V1948 vector V2060) (let Result (let V1951 (shen.lazyderef (tl V1947) V2060) (if (cons? V1951) (let A (hd V1951) (let V1952 (shen.lazyderef (tl V1951) V2060) (if (= () V1952) (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (if (shen.pvar? V1952) (do (shen.bindv V1952 () V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1952 V2060) Result))) false)))) (if (shen.pvar? V1951) (let A (shen.newpv V2060) (do (shen.bindv V1951 (cons A ()) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1951 V2060) Result)))) false))) (do (shen.unbindv V1948 V2060) Result))) false))) (if (shen.pvar? V1947) (let A (shen.newpv V2060) (do (shen.bindv V1947 (cons vector (cons A ())) V2060) (let Result (do (shen.incinfs) (shen.th* X A V2059 V2060 (freeze (shen.th* Y (cons vector (cons A ())) V2059 V2060 V2061)))) (do (shen.unbindv V1947 V2060) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1953 (shen.lazyderef V2057 V2060) (if (cons? V1953) (let V1954 (shen.lazyderef (hd V1953) V2060) (if (= @s V1954) (let V1955 (shen.lazyderef (tl V1953) V2060) (if (cons? V1955) (let X (hd V1955) (let V1956 (shen.lazyderef (tl V1955) V2060) (if (cons? V1956) (let Y (hd V1956) (let V1957 (shen.lazyderef (tl V1956) V2060) (if (= () V1957) (let V1958 (shen.lazyderef V2058 V2060) (if (= string V1958) (do (shen.incinfs) (shen.th* X string V2059 V2060 (freeze (shen.th* Y string V2059 V2060 V2061)))) (if (shen.pvar? V1958) (do (shen.bindv V1958 string V2060) (let Result (do (shen.incinfs) (shen.th* X string V2059 V2060 (freeze (shen.th* Y string V2059 V2060 V2061)))) (do (shen.unbindv V1958 V2060) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1959 (shen.lazyderef V2057 V2060) (if (cons? V1959) (let V1960 (shen.lazyderef (hd V1959) V2060) (if (= lambda V1960) (let V1961 (shen.lazyderef (tl V1959) V2060) (if (cons? V1961) (let X (hd V1961) (let V1962 (shen.lazyderef (tl V1961) V2060) (if (cons? V1962) (let Y (hd V1962) (let V1963 (shen.lazyderef (tl V1962) V2060) (if (= () V1963) (let V1964 (shen.lazyderef V2058 V2060) (if (cons? V1964) (let A (hd V1964) (let V1965 (shen.lazyderef (tl V1964) V2060) (if (cons? V1965) (let V1966 (shen.lazyderef (hd V1965) V2060) (if (= --> V1966) (let V1967 (shen.lazyderef (tl V1965) V2060) (if (cons? V1967) (let B (hd V1967) (let V1968 (shen.lazyderef (tl V1967) V2060) (if (= () V1968) (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (if (shen.pvar? V1968) (do (shen.bindv V1968 () V2060) (let Result (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (do (shen.unbindv V1968 V2060) Result))) false)))) (if (shen.pvar? V1967) (let B (shen.newpv V2060) (do (shen.bindv V1967 (cons B ()) V2060) (let Result (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (do (shen.unbindv V1967 V2060) Result)))) false))) (if (shen.pvar? V1966) (do (shen.bindv V1966 --> V2060) (let Result (let V1969 (shen.lazyderef (tl V1965) V2060) (if (cons? V1969) (let B (hd V1969) (let V1970 (shen.lazyderef (tl V1969) V2060) (if (= () V1970) (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (if (shen.pvar? V1970) (do (shen.bindv V1970 () V2060) (let Result (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (do (shen.unbindv V1970 V2060) Result))) false)))) (if (shen.pvar? V1969) (let B (shen.newpv V2060) (do (shen.bindv V1969 (cons B ()) V2060) (let Result (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (do (shen.unbindv V1969 V2060) Result)))) false))) (do (shen.unbindv V1966 V2060) Result))) false))) (if (shen.pvar? V1965) (let B (shen.newpv V2060) (do (shen.bindv V1965 (cons --> (cons B ())) V2060) (let Result (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (do (shen.unbindv V1965 V2060) Result)))) false)))) (if (shen.pvar? V1964) (let A (shen.newpv V2060) (let B (shen.newpv V2060) (do (shen.bindv V1964 (cons A (cons --> (cons B ()))) V2060) (let Result (let Z (shen.newpv V2060) (let X&& (shen.newpv V2060) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Y V2060)) V2060 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2059) V2060 V2061)))))))))) (do (shen.unbindv V1964 V2060) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1971 (shen.lazyderef V2057 V2060) (if (cons? V1971) (let V1972 (shen.lazyderef (hd V1971) V2060) (if (= let V1972) (let V1973 (shen.lazyderef (tl V1971) V2060) (if (cons? V1973) (let X (hd V1973) (let V1974 (shen.lazyderef (tl V1973) V2060) (if (cons? V1974) (let Y (hd V1974) (let V1975 (shen.lazyderef (tl V1974) V2060) (if (cons? V1975) (let Z (hd V1975) (let V1976 (shen.lazyderef (tl V1975) V2060) (if (= () V1976) (let W (shen.newpv V2060) (let X&& (shen.newpv V2060) (let B (shen.newpv V2060) (do (shen.incinfs) (shen.th* Y B V2059 V2060 (freeze (bind X&& (shen.placeholder) V2060 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2060) (shen.lazyderef X V2060) (shen.lazyderef Z V2060)) V2060 (freeze (shen.th* W V2058 (cons (cons X&& (cons : (cons B ()))) V2059) V2060 V2061))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1977 (shen.lazyderef V2057 V2060) (if (cons? V1977) (let V1978 (shen.lazyderef (hd V1977) V2060) (if (= open V1978) (let V1979 (shen.lazyderef (tl V1977) V2060) (if (cons? V1979) (let FileName (hd V1979) (let V1980 (shen.lazyderef (tl V1979) V2060) (if (cons? V1980) (let Direction1910 (hd V1980) (let V1981 (shen.lazyderef (tl V1980) V2060) (if (= () V1981) (let V1982 (shen.lazyderef V2058 V2060) (if (cons? V1982) (let V1983 (shen.lazyderef (hd V1982) V2060) (if (= stream V1983) (let V1984 (shen.lazyderef (tl V1982) V2060) (if (cons? V1984) (let Direction (hd V1984) (let V1985 (shen.lazyderef (tl V1984) V2060) (if (= () V1985) (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (if (shen.pvar? V1985) (do (shen.bindv V1985 () V2060) (let Result (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (do (shen.unbindv V1985 V2060) Result))) false)))) (if (shen.pvar? V1984) (let Direction (shen.newpv V2060) (do (shen.bindv V1984 (cons Direction ()) V2060) (let Result (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (do (shen.unbindv V1984 V2060) Result)))) false))) (if (shen.pvar? V1983) (do (shen.bindv V1983 stream V2060) (let Result (let V1986 (shen.lazyderef (tl V1982) V2060) (if (cons? V1986) (let Direction (hd V1986) (let V1987 (shen.lazyderef (tl V1986) V2060) (if (= () V1987) (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (if (shen.pvar? V1987) (do (shen.bindv V1987 () V2060) (let Result (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (do (shen.unbindv V1987 V2060) Result))) false)))) (if (shen.pvar? V1986) (let Direction (shen.newpv V2060) (do (shen.bindv V1986 (cons Direction ()) V2060) (let Result (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (do (shen.unbindv V1986 V2060) Result)))) false))) (do (shen.unbindv V1983 V2060) Result))) false))) (if (shen.pvar? V1982) (let Direction (shen.newpv V2060) (do (shen.bindv V1982 (cons stream (cons Direction ())) V2060) (let Result (do (shen.incinfs) (unify! Direction Direction1910 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* FileName string V2059 V2060 V2061)))))) (do (shen.unbindv V1982 V2060) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1988 (shen.lazyderef V2057 V2060) (if (cons? V1988) (let V1989 (shen.lazyderef (hd V1988) V2060) (if (= type V1989) (let V1990 (shen.lazyderef (tl V1988) V2060) (if (cons? V1990) (let X (hd V1990) (let V1991 (shen.lazyderef (tl V1990) V2060) (if (cons? V1991) (let A (hd V1991) (let V1992 (shen.lazyderef (tl V1991) V2060) (if (= () V1992) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (unify A V2058 V2060 (freeze (shen.th* X A V2059 V2060 V2061)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1993 (shen.lazyderef V2057 V2060) (if (cons? V1993) (let V1994 (shen.lazyderef (hd V1993) V2060) (if (= input+ V1994) (let V1995 (shen.lazyderef (tl V1993) V2060) (if (cons? V1995) (let A (hd V1995) (let V1996 (shen.lazyderef (tl V1995) V2060) (if (cons? V1996) (let Stream (hd V1996) (let V1997 (shen.lazyderef (tl V1996) V2060) (if (= () V1997) (let C (shen.newpv V2060) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2060)) V2060 (freeze (unify V2058 C V2060 (freeze (shen.th* Stream (cons stream (cons in ())) V2059 V2060 V2061))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1998 (shen.lazyderef V2057 V2060) (if (cons? V1998) (let V1999 (shen.lazyderef (hd V1998) V2060) (if (= set V1999) (let V2000 (shen.lazyderef (tl V1998) V2060) (if (cons? V2000) (let Var (hd V2000) (let V2001 (shen.lazyderef (tl V2000) V2060) (if (cons? V2001) (let Val (hd V2001) (let V2002 (shen.lazyderef (tl V2001) V2060) (if (= () V2002) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (shen.th* Var symbol V2059 V2060 (freeze (cut Throwcontrol V2060 (freeze (shen.th* (cons value (cons Var ())) V2058 V2059 V2060 (freeze (shen.th* Val V2058 V2059 V2060 V2061)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2060) (do (shen.incinfs) (shen.t*-hyps V2059 NewHyp V2060 (freeze (shen.th* V2057 V2058 NewHyp V2060 V2061))))) (if (= Case false) (let Case (let V2003 (shen.lazyderef V2057 V2060) (if (cons? V2003) (let V2004 (shen.lazyderef (hd V2003) V2060) (if (= define V2004) (let V2005 (shen.lazyderef (tl V2003) V2060) (if (cons? V2005) (let F (hd V2005) (let X (tl V2005) (do (shen.incinfs) (cut Throwcontrol V2060 (freeze (shen.t*-def (cons define (cons F X)) V2058 V2059 V2060 V2061)))))) false)) false)) false)) (if (= Case false) (let Case (let V2006 (shen.lazyderef V2057 V2060) (if (cons? V2006) (let V2007 (shen.lazyderef (hd V2006) V2060) (if (= defmacro V2007) (let V2008 (shen.lazyderef V2058 V2060) (if (= unit V2008) (do (shen.incinfs) (cut Throwcontrol V2060 V2061)) (if (shen.pvar? V2008) (do (shen.bindv V2008 unit V2060) (let Result (do (shen.incinfs) (cut Throwcontrol V2060 V2061)) (do (shen.unbindv V2008 V2060) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2009 (shen.lazyderef V2057 V2060) (if (cons? V2009) (let V2010 (shen.lazyderef (hd V2009) V2060) (if (= shen.process-datatype V2010) (let V2011 (shen.lazyderef V2058 V2060) (if (= symbol V2011) (do (shen.incinfs) (thaw V2061)) (if (shen.pvar? V2011) (do (shen.bindv V2011 symbol V2060) (let Result (do (shen.incinfs) (thaw V2061)) (do (shen.unbindv V2011 V2060) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2012 (shen.lazyderef V2057 V2060) (if (cons? V2012) (let V2013 (shen.lazyderef (hd V2012) V2060) (if (= shen.synonyms-help V2013) (let V2014 (shen.lazyderef V2058 V2060) (if (= symbol V2014) (do (shen.incinfs) (thaw V2061)) (if (shen.pvar? V2014) (do (shen.bindv V2014 symbol V2060) (let Result (do (shen.incinfs) (thaw V2061)) (do (shen.unbindv V2014 V2060) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2060) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2060 (freeze (shen.udefs* (cons V2057 (cons : (cons V2058 ()))) V2059 Datatypes V2060 V2061))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
|
49
|
+
(defun shen.th* (V2106 V2107 V2108 V2109 V2110) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2106 (cons : (cons V2107 ()))) V2108 V2109 (freeze (fwhen false V2109 V2110)))) (if (= Case false) (let Case (let F (shen.newpv V2109) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2106 V2109)) V2109 (freeze (bind F (shen.sigf (shen.lazyderef V2106 V2109)) V2109 (freeze (call (cons F (cons V2107 ())) V2109 V2110))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2106 V2107 V2109 V2110)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2106 V2107 V2108 V2109 V2110)) (if (= Case false) (let Case (let V1963 (shen.lazyderef V2106 V2109) (if (cons? V1963) (let F (hd V1963) (let V1964 (shen.lazyderef (tl V1963) V2109) (if (= () V1964) (do (shen.incinfs) (shen.th* F (cons --> (cons V2107 ())) V2108 V2109 V2110)) false))) false)) (if (= Case false) (let Case (let V1965 (shen.lazyderef V2106 V2109) (if (cons? V1965) (let F (hd V1965) (let V1966 (shen.lazyderef (tl V1965) V2109) (if (cons? V1966) (let X (hd V1966) (let V1967 (shen.lazyderef (tl V1966) V2109) (if (= () V1967) (let B (shen.newpv V2109) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2107 ()))) V2108 V2109 (freeze (shen.th* X B V2108 V2109 V2110))))) false))) false))) false)) (if (= Case false) (let Case (let V1968 (shen.lazyderef V2106 V2109) (if (cons? V1968) (let V1969 (shen.lazyderef (hd V1968) V2109) (if (= cons V1969) (let V1970 (shen.lazyderef (tl V1968) V2109) (if (cons? V1970) (let X (hd V1970) (let V1971 (shen.lazyderef (tl V1970) V2109) (if (cons? V1971) (let Y (hd V1971) (let V1972 (shen.lazyderef (tl V1971) V2109) (if (= () V1972) (let V1973 (shen.lazyderef V2107 V2109) (if (cons? V1973) (let V1974 (shen.lazyderef (hd V1973) V2109) (if (= list V1974) (let V1975 (shen.lazyderef (tl V1973) V2109) (if (cons? V1975) (let A (hd V1975) (let V1976 (shen.lazyderef (tl V1975) V2109) (if (= () V1976) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V1976) (do (shen.bindv V1976 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1976 V2109) Result))) false)))) (if (shen.pvar? V1975) (let A (shen.newpv V2109) (do (shen.bindv V1975 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1975 V2109) Result)))) false))) (if (shen.pvar? V1974) (do (shen.bindv V1974 list V2109) (let Result (let V1977 (shen.lazyderef (tl V1973) V2109) (if (cons? V1977) (let A (hd V1977) (let V1978 (shen.lazyderef (tl V1977) V2109) (if (= () V1978) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V1978) (do (shen.bindv V1978 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1978 V2109) Result))) false)))) (if (shen.pvar? V1977) (let A (shen.newpv V2109) (do (shen.bindv V1977 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1977 V2109) Result)))) false))) (do (shen.unbindv V1974 V2109) Result))) false))) (if (shen.pvar? V1973) (let A (shen.newpv V2109) (do (shen.bindv V1973 (cons list (cons A ())) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons list (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1973 V2109) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1979 (shen.lazyderef V2106 V2109) (if (cons? V1979) (let V1980 (shen.lazyderef (hd V1979) V2109) (if (= @p V1980) (let V1981 (shen.lazyderef (tl V1979) V2109) (if (cons? V1981) (let X (hd V1981) (let V1982 (shen.lazyderef (tl V1981) V2109) (if (cons? V1982) (let Y (hd V1982) (let V1983 (shen.lazyderef (tl V1982) V2109) (if (= () V1983) (let V1984 (shen.lazyderef V2107 V2109) (if (cons? V1984) (let A (hd V1984) (let V1985 (shen.lazyderef (tl V1984) V2109) (if (cons? V1985) (let V1986 (shen.lazyderef (hd V1985) V2109) (if (= * V1986) (let V1987 (shen.lazyderef (tl V1985) V2109) (if (cons? V1987) (let B (hd V1987) (let V1988 (shen.lazyderef (tl V1987) V2109) (if (= () V1988) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (if (shen.pvar? V1988) (do (shen.bindv V1988 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1988 V2109) Result))) false)))) (if (shen.pvar? V1987) (let B (shen.newpv V2109) (do (shen.bindv V1987 (cons B ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1987 V2109) Result)))) false))) (if (shen.pvar? V1986) (do (shen.bindv V1986 * V2109) (let Result (let V1989 (shen.lazyderef (tl V1985) V2109) (if (cons? V1989) (let B (hd V1989) (let V1990 (shen.lazyderef (tl V1989) V2109) (if (= () V1990) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (if (shen.pvar? V1990) (do (shen.bindv V1990 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1990 V2109) Result))) false)))) (if (shen.pvar? V1989) (let B (shen.newpv V2109) (do (shen.bindv V1989 (cons B ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1989 V2109) Result)))) false))) (do (shen.unbindv V1986 V2109) Result))) false))) (if (shen.pvar? V1985) (let B (shen.newpv V2109) (do (shen.bindv V1985 (cons * (cons B ())) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1985 V2109) Result)))) false)))) (if (shen.pvar? V1984) (let A (shen.newpv V2109) (let B (shen.newpv V2109) (do (shen.bindv V1984 (cons A (cons * (cons B ()))) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y B V2108 V2109 V2110)))) (do (shen.unbindv V1984 V2109) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1991 (shen.lazyderef V2106 V2109) (if (cons? V1991) (let V1992 (shen.lazyderef (hd V1991) V2109) (if (= @v V1992) (let V1993 (shen.lazyderef (tl V1991) V2109) (if (cons? V1993) (let X (hd V1993) (let V1994 (shen.lazyderef (tl V1993) V2109) (if (cons? V1994) (let Y (hd V1994) (let V1995 (shen.lazyderef (tl V1994) V2109) (if (= () V1995) (let V1996 (shen.lazyderef V2107 V2109) (if (cons? V1996) (let V1997 (shen.lazyderef (hd V1996) V2109) (if (= vector V1997) (let V1998 (shen.lazyderef (tl V1996) V2109) (if (cons? V1998) (let A (hd V1998) (let V1999 (shen.lazyderef (tl V1998) V2109) (if (= () V1999) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V1999) (do (shen.bindv V1999 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1999 V2109) Result))) false)))) (if (shen.pvar? V1998) (let A (shen.newpv V2109) (do (shen.bindv V1998 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1998 V2109) Result)))) false))) (if (shen.pvar? V1997) (do (shen.bindv V1997 vector V2109) (let Result (let V2000 (shen.lazyderef (tl V1996) V2109) (if (cons? V2000) (let A (hd V2000) (let V2001 (shen.lazyderef (tl V2000) V2109) (if (= () V2001) (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (if (shen.pvar? V2001) (do (shen.bindv V2001 () V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V2001 V2109) Result))) false)))) (if (shen.pvar? V2000) (let A (shen.newpv V2109) (do (shen.bindv V2000 (cons A ()) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V2000 V2109) Result)))) false))) (do (shen.unbindv V1997 V2109) Result))) false))) (if (shen.pvar? V1996) (let A (shen.newpv V2109) (do (shen.bindv V1996 (cons vector (cons A ())) V2109) (let Result (do (shen.incinfs) (shen.th* X A V2108 V2109 (freeze (shen.th* Y (cons vector (cons A ())) V2108 V2109 V2110)))) (do (shen.unbindv V1996 V2109) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2002 (shen.lazyderef V2106 V2109) (if (cons? V2002) (let V2003 (shen.lazyderef (hd V2002) V2109) (if (= @s V2003) (let V2004 (shen.lazyderef (tl V2002) V2109) (if (cons? V2004) (let X (hd V2004) (let V2005 (shen.lazyderef (tl V2004) V2109) (if (cons? V2005) (let Y (hd V2005) (let V2006 (shen.lazyderef (tl V2005) V2109) (if (= () V2006) (let V2007 (shen.lazyderef V2107 V2109) (if (= string V2007) (do (shen.incinfs) (shen.th* X string V2108 V2109 (freeze (shen.th* Y string V2108 V2109 V2110)))) (if (shen.pvar? V2007) (do (shen.bindv V2007 string V2109) (let Result (do (shen.incinfs) (shen.th* X string V2108 V2109 (freeze (shen.th* Y string V2108 V2109 V2110)))) (do (shen.unbindv V2007 V2109) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2008 (shen.lazyderef V2106 V2109) (if (cons? V2008) (let V2009 (shen.lazyderef (hd V2008) V2109) (if (= lambda V2009) (let V2010 (shen.lazyderef (tl V2008) V2109) (if (cons? V2010) (let X (hd V2010) (let V2011 (shen.lazyderef (tl V2010) V2109) (if (cons? V2011) (let Y (hd V2011) (let V2012 (shen.lazyderef (tl V2011) V2109) (if (= () V2012) (let V2013 (shen.lazyderef V2107 V2109) (if (cons? V2013) (let A (hd V2013) (let V2014 (shen.lazyderef (tl V2013) V2109) (if (cons? V2014) (let V2015 (shen.lazyderef (hd V2014) V2109) (if (= --> V2015) (let V2016 (shen.lazyderef (tl V2014) V2109) (if (cons? V2016) (let B (hd V2016) (let V2017 (shen.lazyderef (tl V2016) V2109) (if (= () V2017) (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (if (shen.pvar? V2017) (do (shen.bindv V2017 () V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2017 V2109) Result))) false)))) (if (shen.pvar? V2016) (let B (shen.newpv V2109) (do (shen.bindv V2016 (cons B ()) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2016 V2109) Result)))) false))) (if (shen.pvar? V2015) (do (shen.bindv V2015 --> V2109) (let Result (let V2018 (shen.lazyderef (tl V2014) V2109) (if (cons? V2018) (let B (hd V2018) (let V2019 (shen.lazyderef (tl V2018) V2109) (if (= () V2019) (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (if (shen.pvar? V2019) (do (shen.bindv V2019 () V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2019 V2109) Result))) false)))) (if (shen.pvar? V2018) (let B (shen.newpv V2109) (do (shen.bindv V2018 (cons B ()) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2018 V2109) Result)))) false))) (do (shen.unbindv V2015 V2109) Result))) false))) (if (shen.pvar? V2014) (let B (shen.newpv V2109) (do (shen.bindv V2014 (cons --> (cons B ())) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2014 V2109) Result)))) false)))) (if (shen.pvar? V2013) (let A (shen.newpv V2109) (let B (shen.newpv V2109) (do (shen.bindv V2013 (cons A (cons --> (cons B ()))) V2109) (let Result (let Z (shen.newpv V2109) (let X&& (shen.newpv V2109) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Y V2109)) V2109 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2108) V2109 V2110)))))))))) (do (shen.unbindv V2013 V2109) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2020 (shen.lazyderef V2106 V2109) (if (cons? V2020) (let V2021 (shen.lazyderef (hd V2020) V2109) (if (= let V2021) (let V2022 (shen.lazyderef (tl V2020) V2109) (if (cons? V2022) (let X (hd V2022) (let V2023 (shen.lazyderef (tl V2022) V2109) (if (cons? V2023) (let Y (hd V2023) (let V2024 (shen.lazyderef (tl V2023) V2109) (if (cons? V2024) (let Z (hd V2024) (let V2025 (shen.lazyderef (tl V2024) V2109) (if (= () V2025) (let W (shen.newpv V2109) (let X&& (shen.newpv V2109) (let B (shen.newpv V2109) (do (shen.incinfs) (shen.th* Y B V2108 V2109 (freeze (bind X&& (shen.placeholder) V2109 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2109) (shen.lazyderef X V2109) (shen.lazyderef Z V2109)) V2109 (freeze (shen.th* W V2107 (cons (cons X&& (cons : (cons B ()))) V2108) V2109 V2110))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2026 (shen.lazyderef V2106 V2109) (if (cons? V2026) (let V2027 (shen.lazyderef (hd V2026) V2109) (if (= open V2027) (let V2028 (shen.lazyderef (tl V2026) V2109) (if (cons? V2028) (let FileName (hd V2028) (let V2029 (shen.lazyderef (tl V2028) V2109) (if (cons? V2029) (let Direction1959 (hd V2029) (let V2030 (shen.lazyderef (tl V2029) V2109) (if (= () V2030) (let V2031 (shen.lazyderef V2107 V2109) (if (cons? V2031) (let V2032 (shen.lazyderef (hd V2031) V2109) (if (= stream V2032) (let V2033 (shen.lazyderef (tl V2031) V2109) (if (cons? V2033) (let Direction (hd V2033) (let V2034 (shen.lazyderef (tl V2033) V2109) (if (= () V2034) (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (if (shen.pvar? V2034) (do (shen.bindv V2034 () V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2034 V2109) Result))) false)))) (if (shen.pvar? V2033) (let Direction (shen.newpv V2109) (do (shen.bindv V2033 (cons Direction ()) V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2033 V2109) Result)))) false))) (if (shen.pvar? V2032) (do (shen.bindv V2032 stream V2109) (let Result (let V2035 (shen.lazyderef (tl V2031) V2109) (if (cons? V2035) (let Direction (hd V2035) (let V2036 (shen.lazyderef (tl V2035) V2109) (if (= () V2036) (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (if (shen.pvar? V2036) (do (shen.bindv V2036 () V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2036 V2109) Result))) false)))) (if (shen.pvar? V2035) (let Direction (shen.newpv V2109) (do (shen.bindv V2035 (cons Direction ()) V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2035 V2109) Result)))) false))) (do (shen.unbindv V2032 V2109) Result))) false))) (if (shen.pvar? V2031) (let Direction (shen.newpv V2109) (do (shen.bindv V2031 (cons stream (cons Direction ())) V2109) (let Result (do (shen.incinfs) (unify! Direction Direction1959 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* FileName string V2108 V2109 V2110)))))) (do (shen.unbindv V2031 V2109) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2037 (shen.lazyderef V2106 V2109) (if (cons? V2037) (let V2038 (shen.lazyderef (hd V2037) V2109) (if (= type V2038) (let V2039 (shen.lazyderef (tl V2037) V2109) (if (cons? V2039) (let X (hd V2039) (let V2040 (shen.lazyderef (tl V2039) V2109) (if (cons? V2040) (let A (hd V2040) (let V2041 (shen.lazyderef (tl V2040) V2109) (if (= () V2041) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (unify A V2107 V2109 (freeze (shen.th* X A V2108 V2109 V2110)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2042 (shen.lazyderef V2106 V2109) (if (cons? V2042) (let V2043 (shen.lazyderef (hd V2042) V2109) (if (= input+ V2043) (let V2044 (shen.lazyderef (tl V2042) V2109) (if (cons? V2044) (let A (hd V2044) (let V2045 (shen.lazyderef (tl V2044) V2109) (if (cons? V2045) (let Stream (hd V2045) (let V2046 (shen.lazyderef (tl V2045) V2109) (if (= () V2046) (let C (shen.newpv V2109) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2109)) V2109 (freeze (unify V2107 C V2109 (freeze (shen.th* Stream (cons stream (cons in ())) V2108 V2109 V2110))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2047 (shen.lazyderef V2106 V2109) (if (cons? V2047) (let V2048 (shen.lazyderef (hd V2047) V2109) (if (= set V2048) (let V2049 (shen.lazyderef (tl V2047) V2109) (if (cons? V2049) (let Var (hd V2049) (let V2050 (shen.lazyderef (tl V2049) V2109) (if (cons? V2050) (let Val (hd V2050) (let V2051 (shen.lazyderef (tl V2050) V2109) (if (= () V2051) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (shen.th* Var symbol V2108 V2109 (freeze (cut Throwcontrol V2109 (freeze (shen.th* (cons value (cons Var ())) V2107 V2108 V2109 (freeze (shen.th* Val V2107 V2108 V2109 V2110)))))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2109) (do (shen.incinfs) (shen.t*-hyps V2108 NewHyp V2109 (freeze (shen.th* V2106 V2107 NewHyp V2109 V2110))))) (if (= Case false) (let Case (let V2052 (shen.lazyderef V2106 V2109) (if (cons? V2052) (let V2053 (shen.lazyderef (hd V2052) V2109) (if (= define V2053) (let V2054 (shen.lazyderef (tl V2052) V2109) (if (cons? V2054) (let F (hd V2054) (let X (tl V2054) (do (shen.incinfs) (cut Throwcontrol V2109 (freeze (shen.t*-def (cons define (cons F X)) V2107 V2108 V2109 V2110)))))) false)) false)) false)) (if (= Case false) (let Case (let V2055 (shen.lazyderef V2106 V2109) (if (cons? V2055) (let V2056 (shen.lazyderef (hd V2055) V2109) (if (= defmacro V2056) (let V2057 (shen.lazyderef V2107 V2109) (if (= unit V2057) (do (shen.incinfs) (cut Throwcontrol V2109 V2110)) (if (shen.pvar? V2057) (do (shen.bindv V2057 unit V2109) (let Result (do (shen.incinfs) (cut Throwcontrol V2109 V2110)) (do (shen.unbindv V2057 V2109) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2058 (shen.lazyderef V2106 V2109) (if (cons? V2058) (let V2059 (shen.lazyderef (hd V2058) V2109) (if (= shen.process-datatype V2059) (let V2060 (shen.lazyderef V2107 V2109) (if (= symbol V2060) (do (shen.incinfs) (thaw V2110)) (if (shen.pvar? V2060) (do (shen.bindv V2060 symbol V2109) (let Result (do (shen.incinfs) (thaw V2110)) (do (shen.unbindv V2060 V2109) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2061 (shen.lazyderef V2106 V2109) (if (cons? V2061) (let V2062 (shen.lazyderef (hd V2061) V2109) (if (= shen.synonyms-help V2062) (let V2063 (shen.lazyderef V2107 V2109) (if (= symbol V2063) (do (shen.incinfs) (thaw V2110)) (if (shen.pvar? V2063) (do (shen.bindv V2063 symbol V2109) (let Result (do (shen.incinfs) (thaw V2110)) (do (shen.unbindv V2063 V2109) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2109) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2109 (freeze (shen.udefs* (cons V2106 (cons : (cons V2107 ()))) V2108 Datatypes V2109 V2110))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
|
50
50
|
|
51
|
-
(defun shen.t*-hyps (V2062 V2063 V2064 V2065) (let Case (let V1825 (shen.lazyderef V2062 V2064) (if (cons? V1825) (let V1826 (shen.lazyderef (hd V1825) V2064) (if (cons? V1826) (let V1827 (shen.lazyderef (hd V1826) V2064) (if (cons? V1827) (let V1828 (shen.lazyderef (hd V1827) V2064) (if (= cons V1828) (let V1829 (shen.lazyderef (tl V1827) V2064) (if (cons? V1829) (let X (hd V1829) (let V1830 (shen.lazyderef (tl V1829) V2064) (if (cons? V1830) (let Y (hd V1830) (let V1831 (shen.lazyderef (tl V1830) V2064) (if (= () V1831) (let V1832 (shen.lazyderef (tl V1826) V2064) (if (cons? V1832) (let V1833 (shen.lazyderef (hd V1832) V2064) (if (= : V1833) (let V1834 (shen.lazyderef (tl V1832) V2064) (if (cons? V1834) (let V1835 (shen.lazyderef (hd V1834) V2064) (if (cons? V1835) (let V1836 (shen.lazyderef (hd V1835) V2064) (if (= list V1836) (let V1837 (shen.lazyderef (tl V1835) V2064) (if (cons? V1837) (let A (hd V1837) (let V1838 (shen.lazyderef (tl V1837) V2064) (if (= () V1838) (let V1839 (shen.lazyderef (tl V1834) V2064) (if (= () V1839) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1839) (do (shen.bindv V1839 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1839 V2064) Result))) false))) (if (shen.pvar? V1838) (do (shen.bindv V1838 () V2064) (let Result (let V1840 (shen.lazyderef (tl V1834) V2064) (if (= () V1840) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1840) (do (shen.bindv V1840 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1840 V2064) Result))) false))) (do (shen.unbindv V1838 V2064) Result))) false)))) (if (shen.pvar? V1837) (let A (shen.newpv V2064) (do (shen.bindv V1837 (cons A ()) V2064) (let Result (let V1841 (shen.lazyderef (tl V1834) V2064) (if (= () V1841) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1841) (do (shen.bindv V1841 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1841 V2064) Result))) false))) (do (shen.unbindv V1837 V2064) Result)))) false))) (if (shen.pvar? V1836) (do (shen.bindv V1836 list V2064) (let Result (let V1842 (shen.lazyderef (tl V1835) V2064) (if (cons? V1842) (let A (hd V1842) (let V1843 (shen.lazyderef (tl V1842) V2064) (if (= () V1843) (let V1844 (shen.lazyderef (tl V1834) V2064) (if (= () V1844) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1844) (do (shen.bindv V1844 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1844 V2064) Result))) false))) (if (shen.pvar? V1843) (do (shen.bindv V1843 () V2064) (let Result (let V1845 (shen.lazyderef (tl V1834) V2064) (if (= () V1845) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1845) (do (shen.bindv V1845 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1845 V2064) Result))) false))) (do (shen.unbindv V1843 V2064) Result))) false)))) (if (shen.pvar? V1842) (let A (shen.newpv V2064) (do (shen.bindv V1842 (cons A ()) V2064) (let Result (let V1846 (shen.lazyderef (tl V1834) V2064) (if (= () V1846) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1846) (do (shen.bindv V1846 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1846 V2064) Result))) false))) (do (shen.unbindv V1842 V2064) Result)))) false))) (do (shen.unbindv V1836 V2064) Result))) false))) (if (shen.pvar? V1835) (let A (shen.newpv V2064) (do (shen.bindv V1835 (cons list (cons A ())) V2064) (let Result (let V1847 (shen.lazyderef (tl V1834) V2064) (if (= () V1847) (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1847) (do (shen.bindv V1847 () V2064) (let Result (let Hyp (tl V1825) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons list (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1847 V2064) Result))) false))) (do (shen.unbindv V1835 V2064) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1848 (shen.lazyderef V2062 V2064) (if (cons? V1848) (let V1849 (shen.lazyderef (hd V1848) V2064) (if (cons? V1849) (let V1850 (shen.lazyderef (hd V1849) V2064) (if (cons? V1850) (let V1851 (shen.lazyderef (hd V1850) V2064) (if (= @p V1851) (let V1852 (shen.lazyderef (tl V1850) V2064) (if (cons? V1852) (let X (hd V1852) (let V1853 (shen.lazyderef (tl V1852) V2064) (if (cons? V1853) (let Y (hd V1853) (let V1854 (shen.lazyderef (tl V1853) V2064) (if (= () V1854) (let V1855 (shen.lazyderef (tl V1849) V2064) (if (cons? V1855) (let V1856 (shen.lazyderef (hd V1855) V2064) (if (= : V1856) (let V1857 (shen.lazyderef (tl V1855) V2064) (if (cons? V1857) (let V1858 (shen.lazyderef (hd V1857) V2064) (if (cons? V1858) (let A (hd V1858) (let V1859 (shen.lazyderef (tl V1858) V2064) (if (cons? V1859) (let V1860 (shen.lazyderef (hd V1859) V2064) (if (= * V1860) (let V1861 (shen.lazyderef (tl V1859) V2064) (if (cons? V1861) (let B (hd V1861) (let V1862 (shen.lazyderef (tl V1861) V2064) (if (= () V1862) (let V1863 (shen.lazyderef (tl V1857) V2064) (if (= () V1863) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1863) (do (shen.bindv V1863 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1863 V2064) Result))) false))) (if (shen.pvar? V1862) (do (shen.bindv V1862 () V2064) (let Result (let V1864 (shen.lazyderef (tl V1857) V2064) (if (= () V1864) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1864) (do (shen.bindv V1864 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1864 V2064) Result))) false))) (do (shen.unbindv V1862 V2064) Result))) false)))) (if (shen.pvar? V1861) (let B (shen.newpv V2064) (do (shen.bindv V1861 (cons B ()) V2064) (let Result (let V1865 (shen.lazyderef (tl V1857) V2064) (if (= () V1865) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1865) (do (shen.bindv V1865 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1865 V2064) Result))) false))) (do (shen.unbindv V1861 V2064) Result)))) false))) (if (shen.pvar? V1860) (do (shen.bindv V1860 * V2064) (let Result (let V1866 (shen.lazyderef (tl V1859) V2064) (if (cons? V1866) (let B (hd V1866) (let V1867 (shen.lazyderef (tl V1866) V2064) (if (= () V1867) (let V1868 (shen.lazyderef (tl V1857) V2064) (if (= () V1868) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1868) (do (shen.bindv V1868 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1868 V2064) Result))) false))) (if (shen.pvar? V1867) (do (shen.bindv V1867 () V2064) (let Result (let V1869 (shen.lazyderef (tl V1857) V2064) (if (= () V1869) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1869) (do (shen.bindv V1869 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1869 V2064) Result))) false))) (do (shen.unbindv V1867 V2064) Result))) false)))) (if (shen.pvar? V1866) (let B (shen.newpv V2064) (do (shen.bindv V1866 (cons B ()) V2064) (let Result (let V1870 (shen.lazyderef (tl V1857) V2064) (if (= () V1870) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1870) (do (shen.bindv V1870 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1870 V2064) Result))) false))) (do (shen.unbindv V1866 V2064) Result)))) false))) (do (shen.unbindv V1860 V2064) Result))) false))) (if (shen.pvar? V1859) (let B (shen.newpv V2064) (do (shen.bindv V1859 (cons * (cons B ())) V2064) (let Result (let V1871 (shen.lazyderef (tl V1857) V2064) (if (= () V1871) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1871) (do (shen.bindv V1871 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1871 V2064) Result))) false))) (do (shen.unbindv V1859 V2064) Result)))) false)))) (if (shen.pvar? V1858) (let A (shen.newpv V2064) (let B (shen.newpv V2064) (do (shen.bindv V1858 (cons A (cons * (cons B ()))) V2064) (let Result (let V1872 (shen.lazyderef (tl V1857) V2064) (if (= () V1872) (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1872) (do (shen.bindv V1872 () V2064) (let Result (let Hyp (tl V1848) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (shen.lazyderef B V2064) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1872 V2064) Result))) false))) (do (shen.unbindv V1858 V2064) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1873 (shen.lazyderef V2062 V2064) (if (cons? V1873) (let V1874 (shen.lazyderef (hd V1873) V2064) (if (cons? V1874) (let V1875 (shen.lazyderef (hd V1874) V2064) (if (cons? V1875) (let V1876 (shen.lazyderef (hd V1875) V2064) (if (= @v V1876) (let V1877 (shen.lazyderef (tl V1875) V2064) (if (cons? V1877) (let X (hd V1877) (let V1878 (shen.lazyderef (tl V1877) V2064) (if (cons? V1878) (let Y (hd V1878) (let V1879 (shen.lazyderef (tl V1878) V2064) (if (= () V1879) (let V1880 (shen.lazyderef (tl V1874) V2064) (if (cons? V1880) (let V1881 (shen.lazyderef (hd V1880) V2064) (if (= : V1881) (let V1882 (shen.lazyderef (tl V1880) V2064) (if (cons? V1882) (let V1883 (shen.lazyderef (hd V1882) V2064) (if (cons? V1883) (let V1884 (shen.lazyderef (hd V1883) V2064) (if (= vector V1884) (let V1885 (shen.lazyderef (tl V1883) V2064) (if (cons? V1885) (let A (hd V1885) (let V1886 (shen.lazyderef (tl V1885) V2064) (if (= () V1886) (let V1887 (shen.lazyderef (tl V1882) V2064) (if (= () V1887) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1887) (do (shen.bindv V1887 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1887 V2064) Result))) false))) (if (shen.pvar? V1886) (do (shen.bindv V1886 () V2064) (let Result (let V1888 (shen.lazyderef (tl V1882) V2064) (if (= () V1888) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1888) (do (shen.bindv V1888 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1888 V2064) Result))) false))) (do (shen.unbindv V1886 V2064) Result))) false)))) (if (shen.pvar? V1885) (let A (shen.newpv V2064) (do (shen.bindv V1885 (cons A ()) V2064) (let Result (let V1889 (shen.lazyderef (tl V1882) V2064) (if (= () V1889) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1889) (do (shen.bindv V1889 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1889 V2064) Result))) false))) (do (shen.unbindv V1885 V2064) Result)))) false))) (if (shen.pvar? V1884) (do (shen.bindv V1884 vector V2064) (let Result (let V1890 (shen.lazyderef (tl V1883) V2064) (if (cons? V1890) (let A (hd V1890) (let V1891 (shen.lazyderef (tl V1890) V2064) (if (= () V1891) (let V1892 (shen.lazyderef (tl V1882) V2064) (if (= () V1892) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1892) (do (shen.bindv V1892 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1892 V2064) Result))) false))) (if (shen.pvar? V1891) (do (shen.bindv V1891 () V2064) (let Result (let V1893 (shen.lazyderef (tl V1882) V2064) (if (= () V1893) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1893) (do (shen.bindv V1893 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1893 V2064) Result))) false))) (do (shen.unbindv V1891 V2064) Result))) false)))) (if (shen.pvar? V1890) (let A (shen.newpv V2064) (do (shen.bindv V1890 (cons A ()) V2064) (let Result (let V1894 (shen.lazyderef (tl V1882) V2064) (if (= () V1894) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1894) (do (shen.bindv V1894 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1894 V2064) Result))) false))) (do (shen.unbindv V1890 V2064) Result)))) false))) (do (shen.unbindv V1884 V2064) Result))) false))) (if (shen.pvar? V1883) (let A (shen.newpv V2064) (do (shen.bindv V1883 (cons vector (cons A ())) V2064) (let Result (let V1895 (shen.lazyderef (tl V1882) V2064) (if (= () V1895) (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1895) (do (shen.bindv V1895 () V2064) (let Result (let Hyp (tl V1873) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons (shen.lazyderef A V2064) ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons (cons vector (cons (shen.lazyderef A V2064) ())) ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1895 V2064) Result))) false))) (do (shen.unbindv V1883 V2064) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1896 (shen.lazyderef V2062 V2064) (if (cons? V1896) (let V1897 (shen.lazyderef (hd V1896) V2064) (if (cons? V1897) (let V1898 (shen.lazyderef (hd V1897) V2064) (if (cons? V1898) (let V1899 (shen.lazyderef (hd V1898) V2064) (if (= @s V1899) (let V1900 (shen.lazyderef (tl V1898) V2064) (if (cons? V1900) (let X (hd V1900) (let V1901 (shen.lazyderef (tl V1900) V2064) (if (cons? V1901) (let Y (hd V1901) (let V1902 (shen.lazyderef (tl V1901) V2064) (if (= () V1902) (let V1903 (shen.lazyderef (tl V1897) V2064) (if (cons? V1903) (let V1904 (shen.lazyderef (hd V1903) V2064) (if (= : V1904) (let V1905 (shen.lazyderef (tl V1903) V2064) (if (cons? V1905) (let V1906 (shen.lazyderef (hd V1905) V2064) (if (= string V1906) (let V1907 (shen.lazyderef (tl V1905) V2064) (if (= () V1907) (let Hyp (tl V1896) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons string ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1907) (do (shen.bindv V1907 () V2064) (let Result (let Hyp (tl V1896) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons string ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1907 V2064) Result))) false))) (if (shen.pvar? V1906) (do (shen.bindv V1906 string V2064) (let Result (let V1908 (shen.lazyderef (tl V1905) V2064) (if (= () V1908) (let Hyp (tl V1896) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons string ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (if (shen.pvar? V1908) (do (shen.bindv V1908 () V2064) (let Result (let Hyp (tl V1896) (do (shen.incinfs) (bind V2063 (cons (cons (shen.lazyderef X V2064) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2064) (cons : (cons string ()))) (shen.lazyderef Hyp V2064))) V2064 V2065))) (do (shen.unbindv V1908 V2064) Result))) false))) (do (shen.unbindv V1906 V2064) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V1909 (shen.lazyderef V2062 V2064) (if (cons? V1909) (let X (hd V1909) (let Hyp (tl V1909) (let NewHyps (shen.newpv V2064) (do (shen.incinfs) (bind V2063 (cons (shen.lazyderef X V2064) (shen.lazyderef NewHyps V2064)) V2064 (freeze (shen.t*-hyps Hyp NewHyps V2064 V2065))))))) false)) Case)) Case)) Case)) Case)))
|
51
|
+
(defun shen.t*-hyps (V2111 V2112 V2113 V2114) (let Case (let V1874 (shen.lazyderef V2111 V2113) (if (cons? V1874) (let V1875 (shen.lazyderef (hd V1874) V2113) (if (cons? V1875) (let V1876 (shen.lazyderef (hd V1875) V2113) (if (cons? V1876) (let V1877 (shen.lazyderef (hd V1876) V2113) (if (= cons V1877) (let V1878 (shen.lazyderef (tl V1876) V2113) (if (cons? V1878) (let X (hd V1878) (let V1879 (shen.lazyderef (tl V1878) V2113) (if (cons? V1879) (let Y (hd V1879) (let V1880 (shen.lazyderef (tl V1879) V2113) (if (= () V1880) (let V1881 (shen.lazyderef (tl V1875) V2113) (if (cons? V1881) (let V1882 (shen.lazyderef (hd V1881) V2113) (if (= : V1882) (let V1883 (shen.lazyderef (tl V1881) V2113) (if (cons? V1883) (let V1884 (shen.lazyderef (hd V1883) V2113) (if (cons? V1884) (let V1885 (shen.lazyderef (hd V1884) V2113) (if (= list V1885) (let V1886 (shen.lazyderef (tl V1884) V2113) (if (cons? V1886) (let A (hd V1886) (let V1887 (shen.lazyderef (tl V1886) V2113) (if (= () V1887) (let V1888 (shen.lazyderef (tl V1883) V2113) (if (= () V1888) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1888) (do (shen.bindv V1888 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1888 V2113) Result))) false))) (if (shen.pvar? V1887) (do (shen.bindv V1887 () V2113) (let Result (let V1889 (shen.lazyderef (tl V1883) V2113) (if (= () V1889) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1889) (do (shen.bindv V1889 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1889 V2113) Result))) false))) (do (shen.unbindv V1887 V2113) Result))) false)))) (if (shen.pvar? V1886) (let A (shen.newpv V2113) (do (shen.bindv V1886 (cons A ()) V2113) (let Result (let V1890 (shen.lazyderef (tl V1883) V2113) (if (= () V1890) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1890) (do (shen.bindv V1890 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1890 V2113) Result))) false))) (do (shen.unbindv V1886 V2113) Result)))) false))) (if (shen.pvar? V1885) (do (shen.bindv V1885 list V2113) (let Result (let V1891 (shen.lazyderef (tl V1884) V2113) (if (cons? V1891) (let A (hd V1891) (let V1892 (shen.lazyderef (tl V1891) V2113) (if (= () V1892) (let V1893 (shen.lazyderef (tl V1883) V2113) (if (= () V1893) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1893) (do (shen.bindv V1893 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1893 V2113) Result))) false))) (if (shen.pvar? V1892) (do (shen.bindv V1892 () V2113) (let Result (let V1894 (shen.lazyderef (tl V1883) V2113) (if (= () V1894) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1894) (do (shen.bindv V1894 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1894 V2113) Result))) false))) (do (shen.unbindv V1892 V2113) Result))) false)))) (if (shen.pvar? V1891) (let A (shen.newpv V2113) (do (shen.bindv V1891 (cons A ()) V2113) (let Result (let V1895 (shen.lazyderef (tl V1883) V2113) (if (= () V1895) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1895) (do (shen.bindv V1895 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1895 V2113) Result))) false))) (do (shen.unbindv V1891 V2113) Result)))) false))) (do (shen.unbindv V1885 V2113) Result))) false))) (if (shen.pvar? V1884) (let A (shen.newpv V2113) (do (shen.bindv V1884 (cons list (cons A ())) V2113) (let Result (let V1896 (shen.lazyderef (tl V1883) V2113) (if (= () V1896) (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1896) (do (shen.bindv V1896 () V2113) (let Result (let Hyp (tl V1874) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons list (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1896 V2113) Result))) false))) (do (shen.unbindv V1884 V2113) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1897 (shen.lazyderef V2111 V2113) (if (cons? V1897) (let V1898 (shen.lazyderef (hd V1897) V2113) (if (cons? V1898) (let V1899 (shen.lazyderef (hd V1898) V2113) (if (cons? V1899) (let V1900 (shen.lazyderef (hd V1899) V2113) (if (= @p V1900) (let V1901 (shen.lazyderef (tl V1899) V2113) (if (cons? V1901) (let X (hd V1901) (let V1902 (shen.lazyderef (tl V1901) V2113) (if (cons? V1902) (let Y (hd V1902) (let V1903 (shen.lazyderef (tl V1902) V2113) (if (= () V1903) (let V1904 (shen.lazyderef (tl V1898) V2113) (if (cons? V1904) (let V1905 (shen.lazyderef (hd V1904) V2113) (if (= : V1905) (let V1906 (shen.lazyderef (tl V1904) V2113) (if (cons? V1906) (let V1907 (shen.lazyderef (hd V1906) V2113) (if (cons? V1907) (let A (hd V1907) (let V1908 (shen.lazyderef (tl V1907) V2113) (if (cons? V1908) (let V1909 (shen.lazyderef (hd V1908) V2113) (if (= * V1909) (let V1910 (shen.lazyderef (tl V1908) V2113) (if (cons? V1910) (let B (hd V1910) (let V1911 (shen.lazyderef (tl V1910) V2113) (if (= () V1911) (let V1912 (shen.lazyderef (tl V1906) V2113) (if (= () V1912) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1912) (do (shen.bindv V1912 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1912 V2113) Result))) false))) (if (shen.pvar? V1911) (do (shen.bindv V1911 () V2113) (let Result (let V1913 (shen.lazyderef (tl V1906) V2113) (if (= () V1913) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1913) (do (shen.bindv V1913 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1913 V2113) Result))) false))) (do (shen.unbindv V1911 V2113) Result))) false)))) (if (shen.pvar? V1910) (let B (shen.newpv V2113) (do (shen.bindv V1910 (cons B ()) V2113) (let Result (let V1914 (shen.lazyderef (tl V1906) V2113) (if (= () V1914) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1914) (do (shen.bindv V1914 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1914 V2113) Result))) false))) (do (shen.unbindv V1910 V2113) Result)))) false))) (if (shen.pvar? V1909) (do (shen.bindv V1909 * V2113) (let Result (let V1915 (shen.lazyderef (tl V1908) V2113) (if (cons? V1915) (let B (hd V1915) (let V1916 (shen.lazyderef (tl V1915) V2113) (if (= () V1916) (let V1917 (shen.lazyderef (tl V1906) V2113) (if (= () V1917) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1917) (do (shen.bindv V1917 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1917 V2113) Result))) false))) (if (shen.pvar? V1916) (do (shen.bindv V1916 () V2113) (let Result (let V1918 (shen.lazyderef (tl V1906) V2113) (if (= () V1918) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1918) (do (shen.bindv V1918 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1918 V2113) Result))) false))) (do (shen.unbindv V1916 V2113) Result))) false)))) (if (shen.pvar? V1915) (let B (shen.newpv V2113) (do (shen.bindv V1915 (cons B ()) V2113) (let Result (let V1919 (shen.lazyderef (tl V1906) V2113) (if (= () V1919) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1919) (do (shen.bindv V1919 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1919 V2113) Result))) false))) (do (shen.unbindv V1915 V2113) Result)))) false))) (do (shen.unbindv V1909 V2113) Result))) false))) (if (shen.pvar? V1908) (let B (shen.newpv V2113) (do (shen.bindv V1908 (cons * (cons B ())) V2113) (let Result (let V1920 (shen.lazyderef (tl V1906) V2113) (if (= () V1920) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1920) (do (shen.bindv V1920 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1920 V2113) Result))) false))) (do (shen.unbindv V1908 V2113) Result)))) false)))) (if (shen.pvar? V1907) (let A (shen.newpv V2113) (let B (shen.newpv V2113) (do (shen.bindv V1907 (cons A (cons * (cons B ()))) V2113) (let Result (let V1921 (shen.lazyderef (tl V1906) V2113) (if (= () V1921) (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1921) (do (shen.bindv V1921 () V2113) (let Result (let Hyp (tl V1897) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (shen.lazyderef B V2113) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1921 V2113) Result))) false))) (do (shen.unbindv V1907 V2113) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1922 (shen.lazyderef V2111 V2113) (if (cons? V1922) (let V1923 (shen.lazyderef (hd V1922) V2113) (if (cons? V1923) (let V1924 (shen.lazyderef (hd V1923) V2113) (if (cons? V1924) (let V1925 (shen.lazyderef (hd V1924) V2113) (if (= @v V1925) (let V1926 (shen.lazyderef (tl V1924) V2113) (if (cons? V1926) (let X (hd V1926) (let V1927 (shen.lazyderef (tl V1926) V2113) (if (cons? V1927) (let Y (hd V1927) (let V1928 (shen.lazyderef (tl V1927) V2113) (if (= () V1928) (let V1929 (shen.lazyderef (tl V1923) V2113) (if (cons? V1929) (let V1930 (shen.lazyderef (hd V1929) V2113) (if (= : V1930) (let V1931 (shen.lazyderef (tl V1929) V2113) (if (cons? V1931) (let V1932 (shen.lazyderef (hd V1931) V2113) (if (cons? V1932) (let V1933 (shen.lazyderef (hd V1932) V2113) (if (= vector V1933) (let V1934 (shen.lazyderef (tl V1932) V2113) (if (cons? V1934) (let A (hd V1934) (let V1935 (shen.lazyderef (tl V1934) V2113) (if (= () V1935) (let V1936 (shen.lazyderef (tl V1931) V2113) (if (= () V1936) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1936) (do (shen.bindv V1936 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1936 V2113) Result))) false))) (if (shen.pvar? V1935) (do (shen.bindv V1935 () V2113) (let Result (let V1937 (shen.lazyderef (tl V1931) V2113) (if (= () V1937) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1937) (do (shen.bindv V1937 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1937 V2113) Result))) false))) (do (shen.unbindv V1935 V2113) Result))) false)))) (if (shen.pvar? V1934) (let A (shen.newpv V2113) (do (shen.bindv V1934 (cons A ()) V2113) (let Result (let V1938 (shen.lazyderef (tl V1931) V2113) (if (= () V1938) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1938) (do (shen.bindv V1938 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1938 V2113) Result))) false))) (do (shen.unbindv V1934 V2113) Result)))) false))) (if (shen.pvar? V1933) (do (shen.bindv V1933 vector V2113) (let Result (let V1939 (shen.lazyderef (tl V1932) V2113) (if (cons? V1939) (let A (hd V1939) (let V1940 (shen.lazyderef (tl V1939) V2113) (if (= () V1940) (let V1941 (shen.lazyderef (tl V1931) V2113) (if (= () V1941) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1941) (do (shen.bindv V1941 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1941 V2113) Result))) false))) (if (shen.pvar? V1940) (do (shen.bindv V1940 () V2113) (let Result (let V1942 (shen.lazyderef (tl V1931) V2113) (if (= () V1942) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1942) (do (shen.bindv V1942 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1942 V2113) Result))) false))) (do (shen.unbindv V1940 V2113) Result))) false)))) (if (shen.pvar? V1939) (let A (shen.newpv V2113) (do (shen.bindv V1939 (cons A ()) V2113) (let Result (let V1943 (shen.lazyderef (tl V1931) V2113) (if (= () V1943) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1943) (do (shen.bindv V1943 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1943 V2113) Result))) false))) (do (shen.unbindv V1939 V2113) Result)))) false))) (do (shen.unbindv V1933 V2113) Result))) false))) (if (shen.pvar? V1932) (let A (shen.newpv V2113) (do (shen.bindv V1932 (cons vector (cons A ())) V2113) (let Result (let V1944 (shen.lazyderef (tl V1931) V2113) (if (= () V1944) (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1944) (do (shen.bindv V1944 () V2113) (let Result (let Hyp (tl V1922) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons (shen.lazyderef A V2113) ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons (cons vector (cons (shen.lazyderef A V2113) ())) ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1944 V2113) Result))) false))) (do (shen.unbindv V1932 V2113) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1945 (shen.lazyderef V2111 V2113) (if (cons? V1945) (let V1946 (shen.lazyderef (hd V1945) V2113) (if (cons? V1946) (let V1947 (shen.lazyderef (hd V1946) V2113) (if (cons? V1947) (let V1948 (shen.lazyderef (hd V1947) V2113) (if (= @s V1948) (let V1949 (shen.lazyderef (tl V1947) V2113) (if (cons? V1949) (let X (hd V1949) (let V1950 (shen.lazyderef (tl V1949) V2113) (if (cons? V1950) (let Y (hd V1950) (let V1951 (shen.lazyderef (tl V1950) V2113) (if (= () V1951) (let V1952 (shen.lazyderef (tl V1946) V2113) (if (cons? V1952) (let V1953 (shen.lazyderef (hd V1952) V2113) (if (= : V1953) (let V1954 (shen.lazyderef (tl V1952) V2113) (if (cons? V1954) (let V1955 (shen.lazyderef (hd V1954) V2113) (if (= string V1955) (let V1956 (shen.lazyderef (tl V1954) V2113) (if (= () V1956) (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1956) (do (shen.bindv V1956 () V2113) (let Result (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1956 V2113) Result))) false))) (if (shen.pvar? V1955) (do (shen.bindv V1955 string V2113) (let Result (let V1957 (shen.lazyderef (tl V1954) V2113) (if (= () V1957) (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (if (shen.pvar? V1957) (do (shen.bindv V1957 () V2113) (let Result (let Hyp (tl V1945) (do (shen.incinfs) (bind V2112 (cons (cons (shen.lazyderef X V2113) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2113) (cons : (cons string ()))) (shen.lazyderef Hyp V2113))) V2113 V2114))) (do (shen.unbindv V1957 V2113) Result))) false))) (do (shen.unbindv V1955 V2113) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V1958 (shen.lazyderef V2111 V2113) (if (cons? V1958) (let X (hd V1958) (let Hyp (tl V1958) (let NewHyps (shen.newpv V2113) (do (shen.incinfs) (bind V2112 (cons (shen.lazyderef X V2113) (shen.lazyderef NewHyps V2113)) V2113 (freeze (shen.t*-hyps Hyp NewHyps V2113 V2114))))))) false)) Case)) Case)) Case)) Case)))
|
52
52
|
|
53
|
-
(defun shen.show (
|
54
|
-
> " (stoutput)) (do (shen.pause-for-user) (thaw
|
53
|
+
(defun shen.show (V2127 V2128 V2129 V2130) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2127 V2129)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2128 V2129) 1) (do (shen.prhush "
|
54
|
+
> " (stoutput)) (do (shen.pause-for-user) (thaw V2130))))))))) (true (thaw V2130))))
|
55
55
|
|
56
56
|
(defun shen.line () (let Infs (inferences) (shen.prhush (cn "____________________________________________________________ " (shen.app Infs (cn " inference" (shen.app (if (= 1 Infs) "" "s") "
|
57
57
|
?- " shen.a)) shen.a)) (stoutput))))
|
58
58
|
|
59
|
-
(defun shen.show-p (
|
59
|
+
(defun shen.show-p (V2131) (cond ((and (cons? V2131) (and (cons? (tl V2131)) (and (= : (hd (tl V2131))) (and (cons? (tl (tl V2131))) (= () (tl (tl (tl V2131)))))))) (shen.prhush (shen.app (hd V2131) (cn " : " (shen.app (hd (tl (tl V2131))) "" shen.r)) shen.r) (stoutput))) (true (shen.prhush (shen.app V2131 "" shen.r) (stoutput)))))
|
60
60
|
|
61
|
-
(defun shen.show-assumptions (
|
61
|
+
(defun shen.show-assumptions (V2134 V2135) (cond ((= () V2134) shen.skip) ((cons? V2134) (do (shen.prhush (shen.app V2135 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2134)) (do (nl 1) (shen.show-assumptions (tl V2134) (+ V2135 1)))))) (true (shen.f_error shen.show-assumptions))))
|
62
62
|
|
63
63
|
(defun shen.pause-for-user () (let Byte (read-byte (stinput)) (if (= Byte 94) (simple-error "input aborted
|
64
64
|
") (nl 1))))
|
65
65
|
|
66
|
-
(defun shen.typedf? (
|
66
|
+
(defun shen.typedf? (V2136) (cons? (assoc V2136 (value shen.*signedfuncs*))))
|
67
67
|
|
68
|
-
(defun shen.sigf (
|
68
|
+
(defun shen.sigf (V2137) (concat shen.type-signature-of- V2137))
|
69
69
|
|
70
70
|
(defun shen.placeholder () (gensym &&))
|
71
71
|
|
72
|
-
(defun shen.base (
|
72
|
+
(defun shen.base (V2138 V2139 V2140 V2141) (let Case (let V1861 (shen.lazyderef V2139 V2140) (if (= number V1861) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2138 V2140)) V2140 V2141)) (if (shen.pvar? V1861) (do (shen.bindv V1861 number V2140) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2138 V2140)) V2140 V2141)) (do (shen.unbindv V1861 V2140) Result))) false))) (if (= Case false) (let Case (let V1862 (shen.lazyderef V2139 V2140) (if (= boolean V1862) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2138 V2140)) V2140 V2141)) (if (shen.pvar? V1862) (do (shen.bindv V1862 boolean V2140) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2138 V2140)) V2140 V2141)) (do (shen.unbindv V1862 V2140) Result))) false))) (if (= Case false) (let Case (let V1863 (shen.lazyderef V2139 V2140) (if (= string V1863) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2138 V2140)) V2140 V2141)) (if (shen.pvar? V1863) (do (shen.bindv V1863 string V2140) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2138 V2140)) V2140 V2141)) (do (shen.unbindv V1863 V2140) Result))) false))) (if (= Case false) (let Case (let V1864 (shen.lazyderef V2139 V2140) (if (= symbol V1864) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2138 V2140)) V2140 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2138 V2140))) V2140 V2141)))) (if (shen.pvar? V1864) (do (shen.bindv V1864 symbol V2140) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2138 V2140)) V2140 (freeze (fwhen (not (shen.ue? (shen.lazyderef V2138 V2140))) V2140 V2141)))) (do (shen.unbindv V1864 V2140) Result))) false))) (if (= Case false) (let V1865 (shen.lazyderef V2138 V2140) (if (= () V1865) (let V1866 (shen.lazyderef V2139 V2140) (if (cons? V1866) (let V1867 (shen.lazyderef (hd V1866) V2140) (if (= list V1867) (let V1868 (shen.lazyderef (tl V1866) V2140) (if (cons? V1868) (let A (hd V1868) (let V1869 (shen.lazyderef (tl V1868) V2140) (if (= () V1869) (do (shen.incinfs) (thaw V2141)) (if (shen.pvar? V1869) (do (shen.bindv V1869 () V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1869 V2140) Result))) false)))) (if (shen.pvar? V1868) (let A (shen.newpv V2140) (do (shen.bindv V1868 (cons A ()) V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1868 V2140) Result)))) false))) (if (shen.pvar? V1867) (do (shen.bindv V1867 list V2140) (let Result (let V1870 (shen.lazyderef (tl V1866) V2140) (if (cons? V1870) (let A (hd V1870) (let V1871 (shen.lazyderef (tl V1870) V2140) (if (= () V1871) (do (shen.incinfs) (thaw V2141)) (if (shen.pvar? V1871) (do (shen.bindv V1871 () V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1871 V2140) Result))) false)))) (if (shen.pvar? V1870) (let A (shen.newpv V2140) (do (shen.bindv V1870 (cons A ()) V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1870 V2140) Result)))) false))) (do (shen.unbindv V1867 V2140) Result))) false))) (if (shen.pvar? V1866) (let A (shen.newpv V2140) (do (shen.bindv V1866 (cons list (cons A ())) V2140) (let Result (do (shen.incinfs) (thaw V2141)) (do (shen.unbindv V1866 V2140) Result)))) false))) false)) Case)) Case)) Case)) Case)))
|
73
73
|
|
74
|
-
(defun shen.by_hypothesis (
|
74
|
+
(defun shen.by_hypothesis (V2142 V2143 V2144 V2145 V2146) (let Case (let V1852 (shen.lazyderef V2144 V2145) (if (cons? V1852) (let V1853 (shen.lazyderef (hd V1852) V2145) (if (cons? V1853) (let Y (hd V1853) (let V1854 (shen.lazyderef (tl V1853) V2145) (if (cons? V1854) (let V1855 (shen.lazyderef (hd V1854) V2145) (if (= : V1855) (let V1856 (shen.lazyderef (tl V1854) V2145) (if (cons? V1856) (let B (hd V1856) (let V1857 (shen.lazyderef (tl V1856) V2145) (if (= () V1857) (do (shen.incinfs) (identical V2142 Y V2145 (freeze (unify! V2143 B V2145 V2146)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V1858 (shen.lazyderef V2144 V2145) (if (cons? V1858) (let Hyp (tl V1858) (do (shen.incinfs) (shen.by_hypothesis V2142 V2143 Hyp V2145 V2146))) false)) Case)))
|
75
75
|
|
76
|
-
(defun shen.t*-def (
|
76
|
+
(defun shen.t*-def (V2147 V2148 V2149 V2150 V2151) (let V1846 (shen.lazyderef V2147 V2150) (if (cons? V1846) (let V1847 (shen.lazyderef (hd V1846) V2150) (if (= define V1847) (let V1848 (shen.lazyderef (tl V1846) V2150) (if (cons? V1848) (let F (hd V1848) (let X (tl V1848) (let V1755 (shen.newpv V2150) (let E (shen.newpv V2150) (do (shen.incinfs) (shen.t*-defh (compile (lambda V1755 (shen.<sig+rules> V1755)) X (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
|
77
77
|
" shen.s))) (simple-error "parse error
|
78
|
-
")))) F
|
78
|
+
")))) F V2148 V2149 V2150 V2151)))))) false)) false)) false)))
|
79
79
|
|
80
|
-
(defun shen.t*-defh (
|
80
|
+
(defun shen.t*-defh (V2152 V2153 V2154 V2155 V2156 V2157) (let V1842 (shen.lazyderef V2152 V2156) (if (cons? V1842) (let Sig (hd V1842) (let Rules (tl V1842) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue-sig Sig) V2153 V2154 V2155 Rules V2156 V2157)))) false)))
|
81
81
|
|
82
|
-
(defun shen.t*-defhh (
|
82
|
+
(defun shen.t*-defhh (V2158 V2159 V2160 V2161 V2162 V2163 V2164 V2165) (do (shen.incinfs) (shen.t*-rules V2163 V2159 1 V2160 (cons (cons V2160 (cons : (cons V2159 ()))) V2162) V2164 (freeze (shen.memo V2160 V2158 V2161 V2164 V2165)))))
|
83
83
|
|
84
|
-
(defun shen.memo (
|
84
|
+
(defun shen.memo (V2166 V2167 V2168 V2169 V2170) (let Jnk (shen.newpv V2169) (do (shen.incinfs) (unify! V2168 V2167 V2169 (freeze (bind Jnk (declare (shen.lazyderef V2166 V2169) (shen.lazyderef V2168 V2169)) V2169 V2170))))))
|
85
85
|
|
86
|
-
(defun shen.<sig+rules> (
|
86
|
+
(defun shen.<sig+rules> (V2171) (let Parse_shen.<signature> (shen.<signature> V2171) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<non-ll-rules> (shen.<non-ll-rules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<non-ll-rules>)) (shen.pair (hd Parse_shen.<non-ll-rules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<non-ll-rules>))) (fail))) (fail))))
|
87
87
|
|
88
|
-
(defun shen.<non-ll-rules> (
|
88
|
+
(defun shen.<non-ll-rules> (V2172) (let YaccParse (let Parse_shen.<rule> (shen.<rule> V2172) (if (not (= (fail) Parse_shen.<rule>)) (let Parse_shen.<non-ll-rules> (shen.<non-ll-rules> Parse_shen.<rule>) (if (not (= (fail) Parse_shen.<non-ll-rules>)) (shen.pair (hd Parse_shen.<non-ll-rules>) (cons (shen.hdtl Parse_shen.<rule>) (shen.hdtl Parse_shen.<non-ll-rules>))) (fail))) (fail))) (if (= YaccParse (fail)) (let Parse_shen.<rule> (shen.<rule> V2172) (if (not (= (fail) Parse_shen.<rule>)) (shen.pair (hd Parse_shen.<rule>) (cons (shen.hdtl Parse_shen.<rule>) ())) (fail))) YaccParse)))
|
89
89
|
|
90
|
-
(defun shen.ue (
|
90
|
+
(defun shen.ue (V2173) (cond ((and (cons? V2173) (and (cons? (tl V2173)) (and (= () (tl (tl V2173))) (= (hd V2173) protect)))) V2173) ((cons? V2173) (map (lambda V1756 (shen.ue V1756)) V2173)) ((variable? V2173) (concat && V2173)) (true V2173)))
|
91
91
|
|
92
|
-
(defun shen.ue-sig (
|
92
|
+
(defun shen.ue-sig (V2174) (cond ((cons? V2174) (map (lambda V1757 (shen.ue-sig V1757)) V2174)) ((variable? V2174) (concat &&& V2174)) (true V2174)))
|
93
93
|
|
94
|
-
(defun shen.ues (
|
94
|
+
(defun shen.ues (V2179) (cond ((shen.ue? V2179) (cons V2179 ())) ((cons? V2179) (union (shen.ues (hd V2179)) (shen.ues (tl V2179)))) (true ())))
|
95
95
|
|
96
|
-
(defun shen.ue? (
|
96
|
+
(defun shen.ue? (V2180) (and (symbol? V2180) (shen.ue-h? (str V2180))))
|
97
97
|
|
98
|
-
(defun shen.ue-h? (
|
98
|
+
(defun shen.ue-h? (V2187) (cond ((and (shen.+string? V2187) (and (= "&" (pos V2187 0)) (and (shen.+string? (tlstr V2187)) (= "&" (pos (tlstr V2187) 0))))) true) (true false)))
|
99
99
|
|
100
|
-
(defun shen.t*-rules (
|
100
|
+
(defun shen.t*-rules (V2188 V2189 V2190 V2191 V2192 V2193 V2194) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V1826 (shen.lazyderef V2188 V2193) (if (= () V1826) (do (shen.incinfs) (thaw V2194)) false)) (if (= Case false) (let Case (let V1827 (shen.lazyderef V2188 V2193) (if (cons? V1827) (let Rule (hd V1827) (let Rules (tl V1827) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2189 V2192 V2193 (freeze (cut Throwcontrol V2193 (freeze (shen.t*-rules Rules V2189 (+ V2190 1) V2191 V2192 V2193 V2194)))))))) false)) (if (= Case false) (let Err (shen.newpv V2193) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2190 V2193) (cn " of " (shen.app (shen.lazyderef V2191 V2193) "" shen.a)) shen.a))) V2193 V2194))) Case)) Case)))))
|
101
101
|
|
102
|
-
(defun shen.t*-rule (
|
102
|
+
(defun shen.t*-rule (V2195 V2196 V2197 V2198 V2199) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V1818 (shen.lazyderef V2195 V2198) (if (cons? V1818) (let Patterns (hd V1818) (let V1819 (shen.lazyderef (tl V1818) V2198) (if (cons? V1819) (let Action (hd V1819) (let V1820 (shen.lazyderef (tl V1819) V2198) (if (= () V1820) (let NewHyps (shen.newpv V2198) (do (shen.incinfs) (shen.newhyps (shen.placeholders Patterns) V2197 NewHyps V2198 (freeze (shen.t*-patterns Patterns V2196 NewHyps V2198 (freeze (cut Throwcontrol V2198 (freeze (shen.t*-action (shen.curry (shen.ue Action)) (shen.result-type Patterns V2196) (shen.patthyps Patterns V2196 V2197) V2198 V2199))))))))) false))) false))) false)))))
|
103
103
|
|
104
|
-
(defun shen.placeholders (
|
104
|
+
(defun shen.placeholders (V2204) (cond ((shen.ue? V2204) (cons V2204 ())) ((cons? V2204) (union (shen.placeholders (hd V2204)) (shen.placeholders (tl V2204)))) (true ())))
|
105
105
|
|
106
|
-
(defun shen.newhyps (
|
106
|
+
(defun shen.newhyps (V2205 V2206 V2207 V2208 V2209) (let Case (let V1805 (shen.lazyderef V2205 V2208) (if (= () V1805) (do (shen.incinfs) (unify! V2207 V2206 V2208 V2209)) false)) (if (= Case false) (let V1806 (shen.lazyderef V2205 V2208) (if (cons? V1806) (let V1801 (hd V1806) (let Vs (tl V1806) (let V1807 (shen.lazyderef V2207 V2208) (if (cons? V1807) (let V1808 (shen.lazyderef (hd V1807) V2208) (if (cons? V1808) (let V (hd V1808) (let V1809 (shen.lazyderef (tl V1808) V2208) (if (cons? V1809) (let V1810 (shen.lazyderef (hd V1809) V2208) (if (= : V1810) (let V1811 (shen.lazyderef (tl V1809) V2208) (if (cons? V1811) (let A (hd V1811) (let V1812 (shen.lazyderef (tl V1811) V2208) (if (= () V1812) (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (if (shen.pvar? V1812) (do (shen.bindv V1812 () V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1812 V2208) Result))) false)))) (if (shen.pvar? V1811) (let A (shen.newpv V2208) (do (shen.bindv V1811 (cons A ()) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1811 V2208) Result)))) false))) (if (shen.pvar? V1810) (do (shen.bindv V1810 : V2208) (let Result (let V1813 (shen.lazyderef (tl V1809) V2208) (if (cons? V1813) (let A (hd V1813) (let V1814 (shen.lazyderef (tl V1813) V2208) (if (= () V1814) (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (if (shen.pvar? V1814) (do (shen.bindv V1814 () V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1814 V2208) Result))) false)))) (if (shen.pvar? V1813) (let A (shen.newpv V2208) (do (shen.bindv V1813 (cons A ()) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1813 V2208) Result)))) false))) (do (shen.unbindv V1810 V2208) Result))) false))) (if (shen.pvar? V1809) (let A (shen.newpv V2208) (do (shen.bindv V1809 (cons : (cons A ())) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1809 V2208) Result)))) false)))) (if (shen.pvar? V1808) (let V (shen.newpv V2208) (let A (shen.newpv V2208) (do (shen.bindv V1808 (cons V (cons : (cons A ()))) V2208) (let Result (let NewHyp (tl V1807) (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209))))) (do (shen.unbindv V1808 V2208) Result))))) false))) (if (shen.pvar? V1807) (let V (shen.newpv V2208) (let A (shen.newpv V2208) (let NewHyp (shen.newpv V2208) (do (shen.bindv V1807 (cons (cons V (cons : (cons A ()))) NewHyp) V2208) (let Result (do (shen.incinfs) (unify! V V1801 V2208 (freeze (shen.newhyps Vs V2206 NewHyp V2208 V2209)))) (do (shen.unbindv V1807 V2208) Result)))))) false))))) false)) Case)))
|
107
107
|
|
108
|
-
(defun shen.patthyps (
|
108
|
+
(defun shen.patthyps (V2212 V2213 V2214) (cond ((= () V2212) V2214) ((and (cons? V2212) (and (cons? V2213) (and (cons? (tl V2213)) (and (= --> (hd (tl V2213))) (and (cons? (tl (tl V2213))) (= () (tl (tl (tl V2213))))))))) (adjoin (cons (hd V2212) (cons : (cons (hd V2213) ()))) (shen.patthyps (tl V2212) (hd (tl (tl V2213))) V2214))) (true (shen.f_error shen.patthyps))))
|
109
109
|
|
110
|
-
(defun shen.result-type (
|
110
|
+
(defun shen.result-type (V2219 V2220) (cond ((and (= () V2219) (and (cons? V2220) (and (= --> (hd V2220)) (and (cons? (tl V2220)) (= () (tl (tl V2220))))))) (hd (tl V2220))) ((= () V2219) V2220) ((and (cons? V2219) (and (cons? V2220) (and (cons? (tl V2220)) (and (= --> (hd (tl V2220))) (and (cons? (tl (tl V2220))) (= () (tl (tl (tl V2220))))))))) (shen.result-type (tl V2219) (hd (tl (tl V2220))))) (true (shen.f_error shen.result-type))))
|
111
111
|
|
112
|
-
(defun shen.t*-patterns (
|
112
|
+
(defun shen.t*-patterns (V2221 V2222 V2223 V2224 V2225) (let Case (let V1793 (shen.lazyderef V2221 V2224) (if (= () V1793) (do (shen.incinfs) (thaw V2225)) false)) (if (= Case false) (let V1794 (shen.lazyderef V2221 V2224) (if (cons? V1794) (let Pattern (hd V1794) (let Patterns (tl V1794) (let V1795 (shen.lazyderef V2222 V2224) (if (cons? V1795) (let A (hd V1795) (let V1796 (shen.lazyderef (tl V1795) V2224) (if (cons? V1796) (let V1797 (shen.lazyderef (hd V1796) V2224) (if (= --> V1797) (let V1798 (shen.lazyderef (tl V1796) V2224) (if (cons? V1798) (let B (hd V1798) (let V1799 (shen.lazyderef (tl V1798) V2224) (if (= () V1799) (do (shen.incinfs) (shen.t* (cons Pattern (cons : (cons A ()))) V2223 V2224 (freeze (shen.t*-patterns Patterns B V2223 V2224 V2225)))) false))) false)) false)) false))) false)))) false)) Case)))
|
113
113
|
|
114
|
-
(defun shen.t*-action (
|
114
|
+
(defun shen.t*-action (V2226 V2227 V2228 V2229 V2230) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V1770 (shen.lazyderef V2226 V2229) (if (cons? V1770) (let V1771 (shen.lazyderef (hd V1770) V2229) (if (= where V1771) (let V1772 (shen.lazyderef (tl V1770) V2229) (if (cons? V1772) (let P (hd V1772) (let V1773 (shen.lazyderef (tl V1772) V2229) (if (cons? V1773) (let Action (hd V1773) (let V1774 (shen.lazyderef (tl V1773) V2229) (if (= () V1774) (do (shen.incinfs) (cut Throwcontrol V2229 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2228 V2229 (freeze (cut Throwcontrol V2229 (freeze (shen.t*-action Action V2227 (cons (cons P (cons : (cons verified ()))) V2228) V2229 V2230)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V1775 (shen.lazyderef V2226 V2229) (if (cons? V1775) (let V1776 (shen.lazyderef (hd V1775) V2229) (if (= shen.choicepoint! V1776) (let V1777 (shen.lazyderef (tl V1775) V2229) (if (cons? V1777) (let V1778 (shen.lazyderef (hd V1777) V2229) (if (cons? V1778) (let V1779 (shen.lazyderef (hd V1778) V2229) (if (cons? V1779) (let V1780 (shen.lazyderef (hd V1779) V2229) (if (= fail-if V1780) (let V1781 (shen.lazyderef (tl V1779) V2229) (if (cons? V1781) (let F (hd V1781) (let V1782 (shen.lazyderef (tl V1781) V2229) (if (= () V1782) (let V1783 (shen.lazyderef (tl V1778) V2229) (if (cons? V1783) (let Action (hd V1783) (let V1784 (shen.lazyderef (tl V1783) V2229) (if (= () V1784) (let V1785 (shen.lazyderef (tl V1777) V2229) (if (= () V1785) (do (shen.incinfs) (cut Throwcontrol V2229 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2227 V2228 V2229 V2230)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V1786 (shen.lazyderef V2226 V2229) (if (cons? V1786) (let V1787 (shen.lazyderef (hd V1786) V2229) (if (= shen.choicepoint! V1787) (let V1788 (shen.lazyderef (tl V1786) V2229) (if (cons? V1788) (let Action (hd V1788) (let V1789 (shen.lazyderef (tl V1788) V2229) (if (= () V1789) (do (shen.incinfs) (cut Throwcontrol V2229 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2227 V2228 V2229 V2230)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2226 (cons : (cons V2227 ()))) V2228 V2229 V2230)) Case)) Case)) Case)))))
|
115
115
|
|
116
|
-
(defun findall (
|
116
|
+
(defun findall (V2231 V2232 V2233 V2234 V2235) (let B (shen.newpv V2234) (let A (shen.newpv V2234) (do (shen.incinfs) (bind A (gensym shen.a) V2234 (freeze (bind B (set (shen.lazyderef A V2234) ()) V2234 (freeze (shen.findallhelp V2231 V2232 V2233 A V2234 V2235)))))))))
|
117
117
|
|
118
|
-
(defun shen.findallhelp (
|
118
|
+
(defun shen.findallhelp (V2236 V2237 V2238 V2239 V2240 V2241) (let Case (do (shen.incinfs) (call V2237 V2240 (freeze (shen.remember V2239 V2236 V2240 (freeze (fwhen false V2240 V2241)))))) (if (= Case false) (do (shen.incinfs) (bind V2238 (value (shen.lazyderef V2239 V2240)) V2240 V2241)) Case)))
|
119
119
|
|
120
|
-
(defun shen.remember (
|
120
|
+
(defun shen.remember (V2242 V2243 V2244 V2245) (let B (shen.newpv V2244) (do (shen.incinfs) (bind B (set (shen.deref V2242 V2244) (cons (shen.deref V2243 V2244) (value (shen.deref V2242 V2244)))) V2244 V2245))))
|
121
121
|
|
122
122
|
|
123
123
|
|
@@ -36,27 +36,27 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
36
36
|
|
37
37
|
(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 ()))))))))))
|
38
38
|
|
39
|
-
(defun shen.multiple-set (
|
39
|
+
(defun shen.multiple-set (V2248) (cond ((= () V2248) ()) ((and (cons? V2248) (cons? (tl V2248))) (do (set (hd V2248) (hd (tl V2248))) (shen.multiple-set (tl (tl V2248))))) (true (shen.f_error shen.multiple-set))))
|
40
40
|
|
41
|
-
(defun destroy (
|
41
|
+
(defun destroy (V2249) (declare V2249 symbol))
|
42
42
|
|
43
43
|
(set shen.*history* ())
|
44
44
|
|
45
45
|
(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)))))))
|
46
46
|
|
47
|
-
(defun shen.retrieve-from-history-if-needed (
|
47
|
+
(defun shen.retrieve-from-history-if-needed (V2259 V2260) (cond ((and (tuple? V2259) (and (cons? (snd V2259)) (element? (hd (snd V2259)) (cons (shen.space) (cons (shen.newline) ()))))) (shen.retrieve-from-history-if-needed (@p (fst V2259) (tl (snd V2259))) V2260)) ((and (tuple? V2259) (and (cons? (snd V2259)) (and (cons? (tl (snd V2259))) (and (= () (tl (tl (snd V2259)))) (and (cons? V2260) (and (= (hd (snd V2259)) (shen.exclamation)) (= (hd (tl (snd V2259))) (shen.exclamation)))))))) (let PastPrint (shen.prbytes (snd (hd V2260))) (hd V2260))) ((and (tuple? V2259) (and (cons? (snd V2259)) (= (hd (snd V2259)) (shen.exclamation)))) (let Key? (shen.make-key (tl (snd V2259)) V2260) (let Find (head (shen.find-past-inputs Key? V2260)) (let PastPrint (shen.prbytes (snd Find)) Find)))) ((and (tuple? V2259) (and (cons? (snd V2259)) (and (= () (tl (snd V2259))) (= (hd (snd V2259)) (shen.percent))))) (do (shen.print-past-inputs (lambda X true) (reverse V2260) 0) (abort))) ((and (tuple? V2259) (and (cons? (snd V2259)) (= (hd (snd V2259)) (shen.percent)))) (let Key? (shen.make-key (tl (snd V2259)) V2260) (let Pastprint (shen.print-past-inputs Key? (reverse V2260) 0) (abort)))) (true V2259)))
|
48
48
|
|
49
49
|
(defun shen.percent () 37)
|
50
50
|
|
51
51
|
(defun shen.exclamation () 33)
|
52
52
|
|
53
|
-
(defun shen.prbytes (
|
53
|
+
(defun shen.prbytes (V2261) (do (map (lambda Byte (pr (n->string Byte) (stoutput))) V2261) (nl 1)))
|
54
54
|
|
55
|
-
(defun shen.update_history (
|
55
|
+
(defun shen.update_history (V2262 V2263) (set shen.*history* (cons V2262 V2263)))
|
56
56
|
|
57
57
|
(defun shen.toplineread () (shen.toplineread_loop (read-byte (stinput)) ()))
|
58
58
|
|
59
|
-
(defun shen.toplineread_loop (
|
59
|
+
(defun shen.toplineread_loop (V2265 V2266) (cond ((= V2265 (shen.hat)) (simple-error "line read aborted")) ((element? V2265 (cons (shen.newline) (cons (shen.carriage-return) ()))) (let Line (compile (lambda V2246 (shen.<st_input> V2246)) V2266 (lambda E shen.nextline)) (let It (shen.record-it V2266) (if (or (= Line shen.nextline) (empty? Line)) (shen.toplineread_loop (read-byte (stinput)) (append V2266 (cons V2265 ()))) (@p Line V2266))))) (true (shen.toplineread_loop (read-byte (stinput)) (append V2266 (cons V2265 ()))))))
|
60
60
|
|
61
61
|
(defun shen.hat () 94)
|
62
62
|
|
@@ -64,7 +64,7 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
64
64
|
|
65
65
|
(defun shen.carriage-return () 13)
|
66
66
|
|
67
|
-
(defun tc (
|
67
|
+
(defun tc (V2271) (cond ((= + V2271) (set shen.*tc* true)) ((= - V2271) (set shen.*tc* false)) (true (simple-error "tc expects a + or -"))))
|
68
68
|
|
69
69
|
(defun shen.prompt () (if (value shen.*tc*) (shen.prhush (cn "
|
70
70
|
|
@@ -72,16 +72,16 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
72
72
|
|
73
73
|
(" (shen.app (length (value shen.*history*)) "-) " shen.a)) (stoutput))))
|
74
74
|
|
75
|
-
(defun shen.toplevel (
|
75
|
+
(defun shen.toplevel (V2272) (shen.toplevel_evaluate V2272 (value shen.*tc*)))
|
76
76
|
|
77
|
-
(defun shen.find-past-inputs (
|
77
|
+
(defun shen.find-past-inputs (V2273 V2274) (let F (shen.find V2273 V2274) (if (empty? F) (simple-error "input not found
|
78
78
|
") F)))
|
79
79
|
|
80
|
-
(defun shen.make-key (
|
80
|
+
(defun shen.make-key (V2275 V2276) (let Atom (hd (compile (lambda V2247 (shen.<st_input> V2247)) V2275 (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
|
81
81
|
" shen.s))) (simple-error "parse error
|
82
|
-
"))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse
|
82
|
+
"))))) (if (integer? Atom) (lambda X (= X (nth (+ Atom 1) (reverse V2276)))) (lambda X (shen.prefix? V2275 (shen.trim-gubbins (snd X)))))))
|
83
83
|
|
84
|
-
(defun shen.trim-gubbins (
|
84
|
+
(defun shen.trim-gubbins (V2277) (cond ((and (cons? V2277) (= (hd V2277) (shen.space))) (shen.trim-gubbins (tl V2277))) ((and (cons? V2277) (= (hd V2277) (shen.newline))) (shen.trim-gubbins (tl V2277))) ((and (cons? V2277) (= (hd V2277) (shen.carriage-return))) (shen.trim-gubbins (tl V2277))) ((and (cons? V2277) (= (hd V2277) (shen.tab))) (shen.trim-gubbins (tl V2277))) ((and (cons? V2277) (= (hd V2277) (shen.left-round))) (shen.trim-gubbins (tl V2277))) (true V2277)))
|
85
85
|
|
86
86
|
(defun shen.space () 32)
|
87
87
|
|
@@ -89,22 +89,22 @@ port " (shen.app (value *port*) (cn " ported by " (shen.app (value *porters*) "
|
|
89
89
|
|
90
90
|
(defun shen.left-round () 40)
|
91
91
|
|
92
|
-
(defun shen.find (
|
92
|
+
(defun shen.find (V2284 V2285) (cond ((= () V2285) ()) ((and (cons? V2285) (V2284 (hd V2285))) (cons (hd V2285) (shen.find V2284 (tl V2285)))) ((cons? V2285) (shen.find V2284 (tl V2285))) (true (shen.f_error shen.find))))
|
93
93
|
|
94
|
-
(defun shen.prefix? (
|
94
|
+
(defun shen.prefix? (V2297 V2298) (cond ((= () V2297) true) ((and (cons? V2297) (and (cons? V2298) (= (hd V2298) (hd V2297)))) (shen.prefix? (tl V2297) (tl V2298))) (true false)))
|
95
95
|
|
96
|
-
(defun shen.print-past-inputs (
|
96
|
+
(defun shen.print-past-inputs (V2307 V2308 V2309) (cond ((= () V2308) _) ((and (cons? V2308) (not (V2307 (hd V2308)))) (shen.print-past-inputs V2307 (tl V2308) (+ V2309 1))) ((and (cons? V2308) (tuple? (hd V2308))) (do (shen.prhush (shen.app V2309 ". " shen.a) (stoutput)) (do (shen.prbytes (snd (hd V2308))) (shen.print-past-inputs V2307 (tl V2308) (+ V2309 1))))) (true (shen.f_error shen.print-past-inputs))))
|
97
97
|
|
98
|
-
(defun shen.toplevel_evaluate (
|
98
|
+
(defun shen.toplevel_evaluate (V2310 V2311) (cond ((and (cons? V2310) (and (cons? (tl V2310)) (and (= : (hd (tl V2310))) (and (cons? (tl (tl V2310))) (and (= () (tl (tl (tl V2310)))) (= true V2311)))))) (shen.typecheck-and-evaluate (hd V2310) (hd (tl (tl V2310))))) ((and (cons? V2310) (cons? (tl V2310))) (do (shen.toplevel_evaluate (cons (hd V2310) ()) V2311) (do (nl 1) (shen.toplevel_evaluate (tl V2310) V2311)))) ((and (cons? V2310) (and (= () (tl V2310)) (= true V2311))) (shen.typecheck-and-evaluate (hd V2310) (gensym A))) ((and (cons? V2310) (and (= () (tl V2310)) (= false V2311))) (let Eval (shen.eval-without-macros (hd V2310)) (print Eval))) (true (shen.f_error shen.toplevel_evaluate))))
|
99
99
|
|
100
|
-
(defun shen.typecheck-and-evaluate (
|
101
|
-
") (let Eval (shen.eval-without-macros
|
100
|
+
(defun shen.typecheck-and-evaluate (V2312 V2313) (let Typecheck (shen.typecheck V2312 V2313) (if (= Typecheck false) (simple-error "type error
|
101
|
+
") (let Eval (shen.eval-without-macros V2312) (let Type (shen.pretty-type Typecheck) (shen.prhush (shen.app Eval (cn " : " (shen.app Type "" shen.r)) shen.s) (stoutput)))))))
|
102
102
|
|
103
|
-
(defun shen.pretty-type (
|
103
|
+
(defun shen.pretty-type (V2314) (shen.mult_subst (value shen.*alphabet*) (shen.extract-pvars V2314) V2314))
|
104
104
|
|
105
|
-
(defun shen.extract-pvars (
|
105
|
+
(defun shen.extract-pvars (V2319) (cond ((shen.pvar? V2319) (cons V2319 ())) ((cons? V2319) (union (shen.extract-pvars (hd V2319)) (shen.extract-pvars (tl V2319)))) (true ())))
|
106
106
|
|
107
|
-
(defun shen.mult_subst (
|
107
|
+
(defun shen.mult_subst (V2324 V2325 V2326) (cond ((= () V2324) V2326) ((= () V2325) V2326) ((and (cons? V2324) (cons? V2325)) (shen.mult_subst (tl V2324) (tl V2325) (subst (hd V2324) (hd V2325) V2326))) (true (shen.f_error shen.mult_subst))))
|
108
108
|
|
109
109
|
|
110
110
|
|
@@ -23,57 +23,57 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
23
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
24
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
25
25
|
|
26
|
-
(defun shen.f_error (
|
27
|
-
" shen.a)) (stoutput)) (do (if (and (not (shen.tracked?
|
26
|
+
(defun shen.f_error (V2327) (do (shen.prhush (cn "partial function " (shen.app V2327 ";
|
27
|
+
" shen.a)) (stoutput)) (do (if (and (not (shen.tracked? V2327)) (y-or-n? (cn "track " (shen.app V2327 "? " shen.a)))) (shen.track-function (ps V2327)) shen.ok) (simple-error "aborted"))))
|
28
28
|
|
29
|
-
(defun shen.tracked? (
|
29
|
+
(defun shen.tracked? (V2328) (element? V2328 (value shen.*tracking*)))
|
30
30
|
|
31
|
-
(defun track (
|
31
|
+
(defun track (V2329) (let Source (ps V2329) (shen.track-function Source)))
|
32
32
|
|
33
|
-
(defun shen.track-function (
|
33
|
+
(defun shen.track-function (V2330) (cond ((and (cons? V2330) (and (= defun (hd V2330)) (and (cons? (tl V2330)) (and (cons? (tl (tl V2330))) (and (cons? (tl (tl (tl V2330)))) (= () (tl (tl (tl (tl V2330)))))))))) (let KL (cons defun (cons (hd (tl V2330)) (cons (hd (tl (tl V2330))) (cons (shen.insert-tracking-code (hd (tl V2330)) (hd (tl (tl V2330))) (hd (tl (tl (tl V2330))))) ())))) (let Ob (eval-kl KL) (let Tr (set shen.*tracking* (cons Ob (value shen.*tracking*))) Ob)))) (true (shen.f_error shen.track-function))))
|
34
34
|
|
35
|
-
(defun shen.insert-tracking-code (
|
35
|
+
(defun shen.insert-tracking-code (V2331 V2332 V2333) (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 V2331 (cons (shen.cons_form V2332) ())))) (cons (cons do (cons (cons shen.terpri-or-read-char ()) (cons (cons let (cons Result (cons V2333 (cons (cons do (cons (cons shen.output-track (cons (cons value (cons shen.*call* ())) (cons V2331 (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 ()))) ()))) ()))) ())))) ()))) ()))) ()))))
|
36
36
|
|
37
37
|
(set shen.*step* false)
|
38
38
|
|
39
|
-
(defun step (
|
39
|
+
(defun step (V2338) (cond ((= + V2338) (set shen.*step* true)) ((= - V2338) (set shen.*step* false)) (true (simple-error "step expects a + or a -.
|
40
40
|
"))))
|
41
41
|
|
42
|
-
(defun spy (
|
42
|
+
(defun spy (V2343) (cond ((= + V2343) (set shen.*spy* true)) ((= - V2343) (set shen.*spy* false)) (true (simple-error "spy expects a + or a -.
|
43
43
|
"))))
|
44
44
|
|
45
45
|
(defun shen.terpri-or-read-char () (if (value shen.*step*) (shen.check-byte (read-byte (value *stinput*))) (nl 1)))
|
46
46
|
|
47
|
-
(defun shen.check-byte (
|
47
|
+
(defun shen.check-byte (V2348) (cond ((= V2348 (shen.hat)) (simple-error "aborted")) (true true)))
|
48
48
|
|
49
|
-
(defun shen.input-track (
|
50
|
-
" (shen.app (shen.spaces
|
51
|
-
" (shen.app (shen.spaces
|
49
|
+
(defun shen.input-track (V2349 V2350 V2351) (do (shen.prhush (cn "
|
50
|
+
" (shen.app (shen.spaces V2349) (cn "<" (shen.app V2349 (cn "> Inputs to " (shen.app V2350 (cn "
|
51
|
+
" (shen.app (shen.spaces V2349) "" shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)) (shen.recursively-print V2351)))
|
52
52
|
|
53
|
-
(defun shen.recursively-print (
|
53
|
+
(defun shen.recursively-print (V2352) (cond ((= () V2352) (shen.prhush " ==>" (stoutput))) ((cons? V2352) (do (print (hd V2352)) (do (shen.prhush ", " (stoutput)) (shen.recursively-print (tl V2352))))) (true (shen.f_error shen.recursively-print))))
|
54
54
|
|
55
|
-
(defun shen.spaces (
|
55
|
+
(defun shen.spaces (V2353) (cond ((= 0 V2353) "") (true (cn " " (shen.spaces (- V2353 1))))))
|
56
56
|
|
57
|
-
(defun shen.output-track (
|
58
|
-
" (shen.app (shen.spaces
|
59
|
-
" (shen.app (shen.spaces
|
57
|
+
(defun shen.output-track (V2354 V2355 V2356) (shen.prhush (cn "
|
58
|
+
" (shen.app (shen.spaces V2354) (cn "<" (shen.app V2354 (cn "> Output from " (shen.app V2355 (cn "
|
59
|
+
" (shen.app (shen.spaces V2354) (cn "==> " (shen.app V2356 "" shen.s)) shen.a)) shen.a)) shen.a)) shen.a)) (stoutput)))
|
60
60
|
|
61
|
-
(defun untrack (
|
61
|
+
(defun untrack (V2357) (eval (ps V2357)))
|
62
62
|
|
63
|
-
(defun profile (
|
63
|
+
(defun profile (V2358) (shen.profile-help (ps V2358)))
|
64
64
|
|
65
|
-
(defun shen.profile-help (
|
65
|
+
(defun shen.profile-help (V2363) (cond ((and (cons? V2363) (and (= defun (hd V2363)) (and (cons? (tl V2363)) (and (cons? (tl (tl V2363))) (and (cons? (tl (tl (tl V2363)))) (= () (tl (tl (tl (tl V2363)))))))))) (let G (gensym shen.f) (let Profile (cons defun (cons (hd (tl V2363)) (cons (hd (tl (tl V2363))) (cons (shen.profile-func (hd (tl V2363)) (hd (tl (tl V2363))) (cons G (hd (tl (tl V2363))))) ())))) (let Def (cons defun (cons G (cons (hd (tl (tl V2363))) (cons (subst G (hd (tl V2363)) (hd (tl (tl (tl V2363))))) ())))) (let CompileProfile (shen.eval-without-macros Profile) (let CompileG (shen.eval-without-macros Def) (hd (tl V2363)))))))) (true (simple-error "Cannot profile.
|
66
66
|
"))))
|
67
67
|
|
68
|
-
(defun unprofile (
|
68
|
+
(defun unprofile (V2364) (untrack V2364))
|
69
69
|
|
70
|
-
(defun shen.profile-func (
|
70
|
+
(defun shen.profile-func (V2365 V2366 V2367) (cons let (cons Start (cons (cons get-time (cons run ())) (cons (cons let (cons Result (cons V2367 (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 V2365 (cons (cons + (cons (cons shen.get-profile (cons V2365 ())) (cons Finish ()))) ()))) (cons Result ())))) ())))) ())))) ())))))
|
71
71
|
|
72
|
-
(defun profile-results (
|
72
|
+
(defun profile-results (V2368) (let Results (shen.get-profile V2368) (let Initialise (shen.put-profile V2368 0) (@p V2368 Results))))
|
73
73
|
|
74
|
-
(defun shen.get-profile (
|
74
|
+
(defun shen.get-profile (V2369) (trap-error (get V2369 profile (value *property-vector*)) (lambda E 0)))
|
75
75
|
|
76
|
-
(defun shen.put-profile (
|
76
|
+
(defun shen.put-profile (V2370 V2371) (put V2370 profile V2371 (value *property-vector*)))
|
77
77
|
|
78
78
|
|
79
79
|
|
@@ -23,14 +23,14 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
23
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
24
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
25
25
|
|
26
|
-
(defun declare (
|
26
|
+
(defun declare (V2373 V2374) (let Record (set shen.*signedfuncs* (cons (cons V2373 V2374) (value shen.*signedfuncs*))) (let Variancy (trap-error (shen.variancy-test V2373 V2374) (lambda E shen.skip)) (let Type (shen.rcons_form (shen.demodulate V2374)) (let F* (concat shen.type-signature-of- V2373) (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) V2373)))))))))))
|
27
27
|
|
28
|
-
(defun shen.demodulate (
|
28
|
+
(defun shen.demodulate (V2375) (trap-error (let Demod (shen.walk (lambda V2372 (shen.demod V2372)) V2375) (if (= Demod V2375) V2375 (shen.demodulate Demod))) (lambda E V2375)))
|
29
29
|
|
30
|
-
(defun shen.variancy-test (
|
30
|
+
(defun shen.variancy-test (V2376 V2377) (let TypeF (shen.typecheck V2376 B) (let Check (if (= symbol TypeF) shen.skip (if (shen.variant? TypeF V2377) shen.skip (shen.prhush (cn "warning: changing the type of " (shen.app V2376 " may create errors
|
31
31
|
" shen.a)) (stoutput)))) shen.skip)))
|
32
32
|
|
33
|
-
(defun shen.variant? (
|
33
|
+
(defun shen.variant? (V2388 V2389) (cond ((= V2389 V2388) true) ((and (cons? V2388) (and (cons? V2389) (= (hd V2389) (hd V2388)))) (shen.variant? (tl V2388) (tl V2389))) ((and (cons? V2388) (and (cons? V2389) (and (shen.pvar? (hd V2388)) (variable? (hd V2389))))) (shen.variant? (subst shen.a (hd V2388) (tl V2388)) (subst shen.a (hd V2389) (tl V2389)))) ((and (cons? V2388) (and (cons? (hd V2388)) (and (cons? V2389) (cons? (hd V2389))))) (shen.variant? (append (hd V2388) (tl V2388)) (append (hd V2389) (tl V2389)))) (true false)))
|
34
34
|
|
35
35
|
(declare absvector? (cons A (cons --> (cons boolean ()))))
|
36
36
|
|
@@ -23,59 +23,59 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
23
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
24
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
25
25
|
|
26
|
-
(defun pr (
|
26
|
+
(defun pr (V2390 V2391) (trap-error (shen.prh V2390 V2391 0) (lambda E V2390)))
|
27
27
|
|
28
|
-
(defun shen.prh (
|
28
|
+
(defun shen.prh (V2392 V2393 V2394) (shen.prh V2392 V2393 (shen.write-char-and-inc V2392 V2393 V2394)))
|
29
29
|
|
30
|
-
(defun shen.write-char-and-inc (
|
30
|
+
(defun shen.write-char-and-inc (V2395 V2396 V2397) (do (write-byte (string->n (pos V2395 V2397)) V2396) (+ V2397 1)))
|
31
31
|
|
32
|
-
(defun print (
|
32
|
+
(defun print (V2398) (let String (shen.insert V2398 "~S") (let Print (shen.prhush String (stoutput)) V2398)))
|
33
33
|
|
34
|
-
(defun shen.prhush (
|
34
|
+
(defun shen.prhush (V2399 V2400) (if (value *hush*) V2399 (pr V2399 V2400)))
|
35
35
|
|
36
|
-
(defun shen.mkstr (
|
36
|
+
(defun shen.mkstr (V2401 V2402) (cond ((string? V2401) (shen.mkstr-l (shen.proc-nl V2401) V2402)) (true (shen.mkstr-r (cons shen.proc-nl (cons V2401 ())) V2402))))
|
37
37
|
|
38
|
-
(defun shen.mkstr-l (
|
38
|
+
(defun shen.mkstr-l (V2403 V2404) (cond ((= () V2404) V2403) ((cons? V2404) (shen.mkstr-l (shen.insert-l (hd V2404) V2403) (tl V2404))) (true (shen.f_error shen.mkstr-l))))
|
39
39
|
|
40
|
-
(defun shen.insert-l (
|
40
|
+
(defun shen.insert-l (V2407 V2408) (cond ((= "" V2408) "") ((and (shen.+string? V2408) (and (= "~" (pos V2408 0)) (and (shen.+string? (tlstr V2408)) (= "A" (pos (tlstr V2408) 0))))) (cons shen.app (cons V2407 (cons (tlstr (tlstr V2408)) (cons shen.a ()))))) ((and (shen.+string? V2408) (and (= "~" (pos V2408 0)) (and (shen.+string? (tlstr V2408)) (= "R" (pos (tlstr V2408) 0))))) (cons shen.app (cons V2407 (cons (tlstr (tlstr V2408)) (cons shen.r ()))))) ((and (shen.+string? V2408) (and (= "~" (pos V2408 0)) (and (shen.+string? (tlstr V2408)) (= "S" (pos (tlstr V2408) 0))))) (cons shen.app (cons V2407 (cons (tlstr (tlstr V2408)) (cons shen.s ()))))) ((shen.+string? V2408) (shen.factor-cn (cons cn (cons (pos V2408 0) (cons (shen.insert-l V2407 (tlstr V2408)) ()))))) ((and (cons? V2408) (and (= cn (hd V2408)) (and (cons? (tl V2408)) (and (cons? (tl (tl V2408))) (= () (tl (tl (tl V2408)))))))) (cons cn (cons (hd (tl V2408)) (cons (shen.insert-l V2407 (hd (tl (tl V2408)))) ())))) ((and (cons? V2408) (and (= shen.app (hd V2408)) (and (cons? (tl V2408)) (and (cons? (tl (tl V2408))) (and (cons? (tl (tl (tl V2408)))) (= () (tl (tl (tl (tl V2408)))))))))) (cons shen.app (cons (hd (tl V2408)) (cons (shen.insert-l V2407 (hd (tl (tl V2408)))) (tl (tl (tl V2408))))))) (true (shen.f_error shen.insert-l))))
|
41
41
|
|
42
|
-
(defun shen.factor-cn (
|
42
|
+
(defun shen.factor-cn (V2409) (cond ((and (cons? V2409) (and (= cn (hd V2409)) (and (cons? (tl V2409)) (and (cons? (tl (tl V2409))) (and (cons? (hd (tl (tl V2409)))) (and (= cn (hd (hd (tl (tl V2409))))) (and (cons? (tl (hd (tl (tl V2409))))) (and (cons? (tl (tl (hd (tl (tl V2409)))))) (and (= () (tl (tl (tl (hd (tl (tl V2409))))))) (and (= () (tl (tl (tl V2409)))) (and (string? (hd (tl V2409))) (string? (hd (tl (hd (tl (tl V2409))))))))))))))))) (cons cn (cons (cn (hd (tl V2409)) (hd (tl (hd (tl (tl V2409)))))) (tl (tl (hd (tl (tl V2409)))))))) (true V2409)))
|
43
43
|
|
44
|
-
(defun shen.proc-nl (
|
44
|
+
(defun shen.proc-nl (V2410) (cond ((= "" V2410) "") ((and (shen.+string? V2410) (and (= "~" (pos V2410 0)) (and (shen.+string? (tlstr V2410)) (= "%" (pos (tlstr V2410) 0))))) (cn (n->string 10) (shen.proc-nl (tlstr (tlstr V2410))))) ((shen.+string? V2410) (cn (pos V2410 0) (shen.proc-nl (tlstr V2410)))) (true (shen.f_error shen.proc-nl))))
|
45
45
|
|
46
|
-
(defun shen.mkstr-r (
|
46
|
+
(defun shen.mkstr-r (V2411 V2412) (cond ((= () V2412) V2411) ((cons? V2412) (shen.mkstr-r (cons shen.insert (cons (hd V2412) (cons V2411 ()))) (tl V2412))) (true (shen.f_error shen.mkstr-r))))
|
47
47
|
|
48
|
-
(defun shen.insert (
|
48
|
+
(defun shen.insert (V2413 V2414) (shen.insert-h V2413 V2414 ""))
|
49
49
|
|
50
|
-
(defun shen.insert-h (
|
50
|
+
(defun shen.insert-h (V2417 V2418 V2419) (cond ((= "" V2418) V2419) ((and (shen.+string? V2418) (and (= "~" (pos V2418 0)) (and (shen.+string? (tlstr V2418)) (= "A" (pos (tlstr V2418) 0))))) (cn V2419 (shen.app V2417 (tlstr (tlstr V2418)) shen.a))) ((and (shen.+string? V2418) (and (= "~" (pos V2418 0)) (and (shen.+string? (tlstr V2418)) (= "R" (pos (tlstr V2418) 0))))) (cn V2419 (shen.app V2417 (tlstr (tlstr V2418)) shen.r))) ((and (shen.+string? V2418) (and (= "~" (pos V2418 0)) (and (shen.+string? (tlstr V2418)) (= "S" (pos (tlstr V2418) 0))))) (cn V2419 (shen.app V2417 (tlstr (tlstr V2418)) shen.s))) ((shen.+string? V2418) (shen.insert-h V2417 (tlstr V2418) (cn V2419 (pos V2418 0)))) (true (shen.f_error shen.insert-h))))
|
51
51
|
|
52
|
-
(defun shen.app (
|
52
|
+
(defun shen.app (V2420 V2421 V2422) (cn (shen.arg->str V2420 V2422) V2421))
|
53
53
|
|
54
|
-
(defun shen.arg->str (
|
54
|
+
(defun shen.arg->str (V2428 V2429) (cond ((= V2428 (fail)) "...") ((shen.list? V2428) (shen.list->str V2428 V2429)) ((string? V2428) (shen.str->str V2428 V2429)) ((absvector? V2428) (shen.vector->str V2428 V2429)) (true (shen.atom->str V2428))))
|
55
55
|
|
56
|
-
(defun shen.list->str (
|
56
|
+
(defun shen.list->str (V2430 V2431) (cond ((= shen.r V2431) (@s "(" (@s (shen.iter-list V2430 shen.r (shen.maxseq)) ")"))) (true (@s "[" (@s (shen.iter-list V2430 V2431 (shen.maxseq)) "]")))))
|
57
57
|
|
58
58
|
(defun shen.maxseq () (value *maximum-print-sequence-size*))
|
59
59
|
|
60
|
-
(defun shen.iter-list (
|
60
|
+
(defun shen.iter-list (V2442 V2443 V2444) (cond ((= () V2442) "") ((= 0 V2444) "... etc") ((and (cons? V2442) (= () (tl V2442))) (shen.arg->str (hd V2442) V2443)) ((cons? V2442) (@s (shen.arg->str (hd V2442) V2443) (@s " " (shen.iter-list (tl V2442) V2443 (- V2444 1))))) (true (@s "|" (@s " " (shen.arg->str V2442 V2443))))))
|
61
61
|
|
62
|
-
(defun shen.str->str (
|
62
|
+
(defun shen.str->str (V2449 V2450) (cond ((= shen.a V2450) V2449) (true (@s (n->string 34) (@s V2449 (n->string 34))))))
|
63
63
|
|
64
|
-
(defun shen.vector->str (
|
64
|
+
(defun shen.vector->str (V2451 V2452) (if (shen.print-vector? V2451) ((<-address V2451 0) V2451) (if (vector? V2451) (@s "<" (@s (shen.iter-vector V2451 1 V2452 (shen.maxseq)) ">")) (@s "<" (@s "<" (@s (shen.iter-vector V2451 0 V2452 (shen.maxseq)) ">>"))))))
|
65
65
|
|
66
|
-
(defun shen.print-vector? (
|
66
|
+
(defun shen.print-vector? (V2453) (let Zero (<-address V2453 0) (if (= Zero shen.tuple) true (if (= Zero shen.pvar) true (if (not (number? Zero)) (shen.fbound? Zero) false)))))
|
67
67
|
|
68
|
-
(defun shen.fbound? (
|
68
|
+
(defun shen.fbound? (V2454) (trap-error (do (ps V2454) true) (lambda E false)))
|
69
69
|
|
70
|
-
(defun shen.tuple (
|
70
|
+
(defun shen.tuple (V2455) (cn "(@p " (shen.app (<-address V2455 1) (cn " " (shen.app (<-address V2455 2) ")" shen.s)) shen.s)))
|
71
71
|
|
72
|
-
(defun shen.iter-vector (
|
72
|
+
(defun shen.iter-vector (V2462 V2463 V2464 V2465) (cond ((= 0 V2465) "... etc") (true (let Item (trap-error (<-address V2462 V2463) (lambda E shen.out-of-bounds)) (let Next (trap-error (<-address V2462 (+ V2463 1)) (lambda E shen.out-of-bounds)) (if (= Item shen.out-of-bounds) "" (if (= Next shen.out-of-bounds) (shen.arg->str Item V2464) (@s (shen.arg->str Item V2464) (@s " " (shen.iter-vector V2462 (+ V2463 1) V2464 (- V2465 1)))))))))))
|
73
73
|
|
74
|
-
(defun shen.atom->str (
|
74
|
+
(defun shen.atom->str (V2466) (trap-error (str V2466) (lambda E (shen.funexstring))))
|
75
75
|
|
76
76
|
(defun shen.funexstring () (@s "" (@s "f" (@s "u" (@s "n" (@s "e" (@s (shen.arg->str (gensym (intern "x")) shen.a) "")))))))
|
77
77
|
|
78
|
-
(defun shen.list? (
|
78
|
+
(defun shen.list? (V2467) (or (empty? V2467) (cons? V2467)))
|
79
79
|
|
80
80
|
|
81
81
|
|
@@ -23,65 +23,65 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
23
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
24
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
25
25
|
|
26
|
-
(defun shen.yacc (
|
26
|
+
(defun shen.yacc (V2470) (cond ((and (cons? V2470) (and (= defcc (hd V2470)) (cons? (tl V2470)))) (shen.yacc->shen (hd (tl V2470)) (tl (tl V2470)))) (true (shen.f_error shen.yacc))))
|
27
27
|
|
28
|
-
(defun shen.yacc->shen (
|
28
|
+
(defun shen.yacc->shen (V2471 V2472) (let CCRules (shen.split_cc_rules true V2472 ()) (let CCBody (map (lambda V2468 (shen.cc_body V2468)) CCRules) (let YaccCases (shen.yacc_cases CCBody) (cons define (cons V2471 (cons Stream (cons -> (cons (shen.kill-code YaccCases) ())))))))))
|
29
29
|
|
30
|
-
(defun shen.kill-code (
|
30
|
+
(defun shen.kill-code (V2473) (cond ((> (occurrences kill V2473) 0) (cons trap-error (cons V2473 (cons (cons lambda (cons E (cons (cons shen.analyse-kill (cons E ())) ()))) ())))) (true V2473)))
|
31
31
|
|
32
32
|
(defun kill () (simple-error "yacc kill"))
|
33
33
|
|
34
|
-
(defun shen.analyse-kill (
|
34
|
+
(defun shen.analyse-kill (V2474) (let String (error-to-string V2474) (if (= String "yacc kill") (fail) V2474)))
|
35
35
|
|
36
|
-
(defun shen.split_cc_rules (
|
36
|
+
(defun shen.split_cc_rules (V2477 V2478 V2479) (cond ((and (= () V2478) (= () V2479)) ()) ((= () V2478) (cons (shen.split_cc_rule V2477 (reverse V2479) ()) ())) ((and (cons? V2478) (= ; (hd V2478))) (cons (shen.split_cc_rule V2477 (reverse V2479) ()) (shen.split_cc_rules V2477 (tl V2478) ()))) ((cons? V2478) (shen.split_cc_rules V2477 (tl V2478) (cons (hd V2478) V2479))) (true (shen.f_error shen.split_cc_rules))))
|
37
37
|
|
38
|
-
(defun shen.split_cc_rule (
|
38
|
+
(defun shen.split_cc_rule (V2484 V2485 V2486) (cond ((and (cons? V2485) (and (= := (hd V2485)) (and (cons? (tl V2485)) (= () (tl (tl V2485)))))) (cons (reverse V2486) (tl V2485))) ((and (cons? V2485) (and (= := (hd V2485)) (and (cons? (tl V2485)) (and (cons? (tl (tl V2485))) (and (= where (hd (tl (tl V2485)))) (and (cons? (tl (tl (tl V2485)))) (= () (tl (tl (tl (tl V2485))))))))))) (cons (reverse V2486) (cons (cons where (cons (hd (tl (tl (tl V2485)))) (cons (hd (tl V2485)) ()))) ()))) ((= () V2485) (do (shen.semantic-completion-warning V2484 V2486) (shen.split_cc_rule V2484 (cons := (cons (shen.default_semantics (reverse V2486)) ())) V2486))) ((cons? V2485) (shen.split_cc_rule V2484 (tl V2485) (cons (hd V2485) V2486))) (true (shen.f_error shen.split_cc_rule))))
|
39
39
|
|
40
|
-
(defun shen.semantic-completion-warning (
|
40
|
+
(defun shen.semantic-completion-warning (V2495 V2496) (cond ((= true V2495) (do (shen.prhush "warning: " (stoutput)) (do (map (lambda X (shen.prhush (shen.app X " " shen.a) (stoutput))) (reverse V2496)) (shen.prhush "has no semantics.
|
41
41
|
" (stoutput))))) (true shen.skip)))
|
42
42
|
|
43
|
-
(defun shen.default_semantics (
|
43
|
+
(defun shen.default_semantics (V2497) (cond ((= () V2497) ()) ((and (cons? V2497) (and (= () (tl V2497)) (shen.grammar_symbol? (hd V2497)))) (hd V2497)) ((and (cons? V2497) (shen.grammar_symbol? (hd V2497))) (cons append (cons (hd V2497) (cons (shen.default_semantics (tl V2497)) ())))) ((cons? V2497) (cons cons (cons (hd V2497) (cons (shen.default_semantics (tl V2497)) ())))) (true (shen.f_error shen.default_semantics))))
|
44
44
|
|
45
|
-
(defun shen.grammar_symbol? (
|
45
|
+
(defun shen.grammar_symbol? (V2498) (and (symbol? V2498) (let Cs (shen.strip-pathname (explode V2498)) (and (= (hd Cs) "<") (= (hd (reverse Cs)) ">")))))
|
46
46
|
|
47
|
-
(defun shen.yacc_cases (
|
47
|
+
(defun shen.yacc_cases (V2499) (cond ((and (cons? V2499) (= () (tl V2499))) (hd V2499)) ((cons? V2499) (let P YaccParse (cons let (cons P (cons (hd V2499) (cons (cons if (cons (cons = (cons P (cons (cons fail ()) ()))) (cons (shen.yacc_cases (tl V2499)) (cons P ())))) ())))))) (true (shen.f_error shen.yacc_cases))))
|
48
48
|
|
49
|
-
(defun shen.cc_body (
|
49
|
+
(defun shen.cc_body (V2500) (cond ((and (cons? V2500) (and (cons? (tl V2500)) (= () (tl (tl V2500))))) (shen.syntax (hd V2500) Stream (hd (tl V2500)))) (true (shen.f_error shen.cc_body))))
|
50
50
|
|
51
|
-
(defun shen.syntax (
|
51
|
+
(defun shen.syntax (V2501 V2502 V2503) (cond ((and (= () V2501) (and (cons? V2503) (and (= where (hd V2503)) (and (cons? (tl V2503)) (and (cons? (tl (tl V2503))) (= () (tl (tl (tl V2503))))))))) (cons if (cons (shen.semantics (hd (tl V2503))) (cons (cons shen.pair (cons (cons hd (cons V2502 ())) (cons (shen.semantics (hd (tl (tl V2503)))) ()))) (cons (cons fail ()) ()))))) ((= () V2501) (cons shen.pair (cons (cons hd (cons V2502 ())) (cons (shen.semantics V2503) ())))) ((cons? V2501) (if (shen.grammar_symbol? (hd V2501)) (shen.recursive_descent V2501 V2502 V2503) (if (variable? (hd V2501)) (shen.variable-match V2501 V2502 V2503) (if (shen.jump_stream? (hd V2501)) (shen.jump_stream V2501 V2502 V2503) (if (shen.terminal? (hd V2501)) (shen.check_stream V2501 V2502 V2503) (if (cons? (hd V2501)) (shen.list-stream (shen.decons (hd V2501)) (tl V2501) V2502 V2503) (simple-error (shen.app (hd V2501) " is not legal syntax
|
52
52
|
" shen.a)))))))) (true (shen.f_error shen.syntax))))
|
53
53
|
|
54
|
-
(defun shen.list-stream (
|
54
|
+
(defun shen.list-stream (V2504 V2505 V2506 V2507) (let Test (cons and (cons (cons cons? (cons (cons hd (cons V2506 ())) ())) (cons (cons cons? (cons (cons hd (cons (cons hd (cons V2506 ())) ())) ())) ()))) (let Placeholder (gensym shen.place) (let RunOn (shen.syntax V2505 (cons shen.pair (cons (cons tl (cons (cons hd (cons V2506 ())) ())) (cons (cons hd (cons (cons tl (cons V2506 ())) ())) ()))) V2507) (let Action (shen.insert-runon RunOn Placeholder (shen.syntax V2504 (cons shen.pair (cons (cons hd (cons (cons hd (cons V2506 ())) ())) (cons (cons hd (cons (cons tl (cons V2506 ())) ())) ()))) Placeholder)) (cons if (cons Test (cons Action (cons (cons fail ()) ())))))))))
|
55
55
|
|
56
|
-
(defun shen.decons (
|
56
|
+
(defun shen.decons (V2508) (cond ((and (cons? V2508) (and (= cons (hd V2508)) (and (cons? (tl V2508)) (and (cons? (tl (tl V2508))) (and (= () (hd (tl (tl V2508)))) (= () (tl (tl (tl V2508))))))))) (cons (hd (tl V2508)) ())) ((and (cons? V2508) (and (= cons (hd V2508)) (and (cons? (tl V2508)) (and (cons? (tl (tl V2508))) (= () (tl (tl (tl V2508)))))))) (cons (hd (tl V2508)) (shen.decons (hd (tl (tl V2508)))))) (true V2508)))
|
57
57
|
|
58
|
-
(defun shen.insert-runon (
|
58
|
+
(defun shen.insert-runon (V2520 V2521 V2522) (cond ((and (cons? V2522) (and (= shen.pair (hd V2522)) (and (cons? (tl V2522)) (and (cons? (tl (tl V2522))) (and (= () (tl (tl (tl V2522)))) (= (hd (tl (tl V2522))) V2521)))))) V2520) ((cons? V2522) (map (lambda Z (shen.insert-runon V2520 V2521 Z)) V2522)) (true V2522)))
|
59
59
|
|
60
|
-
(defun shen.strip-pathname (
|
60
|
+
(defun shen.strip-pathname (V2527) (cond ((not (element? "." V2527)) V2527) ((cons? V2527) (shen.strip-pathname (tl V2527))) (true (shen.f_error shen.strip-pathname))))
|
61
61
|
|
62
|
-
(defun shen.recursive_descent (
|
62
|
+
(defun shen.recursive_descent (V2528 V2529 V2530) (cond ((cons? V2528) (let Test (cons (hd V2528) (cons V2529 ())) (let Action (shen.syntax (tl V2528) (concat Parse_ (hd V2528)) V2530) (let Else (cons fail ()) (cons let (cons (concat Parse_ (hd V2528)) (cons Test (cons (cons if (cons (cons not (cons (cons = (cons (cons fail ()) (cons (concat Parse_ (hd V2528)) ()))) ())) (cons Action (cons Else ())))) ())))))))) (true (shen.f_error shen.recursive_descent))))
|
63
63
|
|
64
|
-
(defun shen.variable-match (
|
64
|
+
(defun shen.variable-match (V2531 V2532 V2533) (cond ((cons? V2531) (let Test (cons cons? (cons (cons hd (cons V2532 ())) ())) (let Action (cons let (cons (concat Parse_ (hd V2531)) (cons (cons hd (cons (cons hd (cons V2532 ())) ())) (cons (shen.syntax (tl V2531) (cons shen.pair (cons (cons tl (cons (cons hd (cons V2532 ())) ())) (cons (cons shen.hdtl (cons V2532 ())) ()))) V2533) ())))) (let Else (cons fail ()) (cons if (cons Test (cons Action (cons Else ())))))))) (true (shen.f_error shen.variable-match))))
|
65
65
|
|
66
|
-
(defun shen.terminal? (
|
66
|
+
(defun shen.terminal? (V2542) (cond ((cons? V2542) false) ((variable? V2542) false) (true true)))
|
67
67
|
|
68
|
-
(defun shen.jump_stream? (
|
68
|
+
(defun shen.jump_stream? (V2547) (cond ((= V2547 _) true) (true false)))
|
69
69
|
|
70
|
-
(defun shen.check_stream (
|
70
|
+
(defun shen.check_stream (V2548 V2549 V2550) (cond ((cons? V2548) (let Test (cons and (cons (cons cons? (cons (cons hd (cons V2549 ())) ())) (cons (cons = (cons (hd V2548) (cons (cons hd (cons (cons hd (cons V2549 ())) ())) ()))) ()))) (let Action (shen.syntax (tl V2548) (cons shen.pair (cons (cons tl (cons (cons hd (cons V2549 ())) ())) (cons (cons shen.hdtl (cons V2549 ())) ()))) V2550) (let Else (cons fail ()) (cons if (cons Test (cons Action (cons Else ())))))))) (true (shen.f_error shen.check_stream))))
|
71
71
|
|
72
|
-
(defun shen.jump_stream (
|
72
|
+
(defun shen.jump_stream (V2551 V2552 V2553) (cond ((cons? V2551) (let Test (cons cons? (cons (cons hd (cons V2552 ())) ())) (let Action (shen.syntax (tl V2551) (cons shen.pair (cons (cons tl (cons (cons hd (cons V2552 ())) ())) (cons (cons shen.hdtl (cons V2552 ())) ()))) V2553) (let Else (cons fail ()) (cons if (cons Test (cons Action (cons Else ())))))))) (true (shen.f_error shen.jump_stream))))
|
73
73
|
|
74
|
-
(defun shen.semantics (
|
74
|
+
(defun shen.semantics (V2554) (cond ((= () V2554) ()) ((shen.grammar_symbol? V2554) (cons shen.hdtl (cons (concat Parse_ V2554) ()))) ((variable? V2554) (concat Parse_ V2554)) ((cons? V2554) (map (lambda V2469 (shen.semantics V2469)) V2554)) (true V2554)))
|
75
75
|
|
76
|
-
(defun shen.snd-or-fail (
|
76
|
+
(defun shen.snd-or-fail (V2561) (cond ((and (cons? V2561) (and (cons? (tl V2561)) (= () (tl (tl V2561))))) (hd (tl V2561))) (true (fail))))
|
77
77
|
|
78
|
-
(defun fail () shen.fail!)(defun shen.pair (
|
78
|
+
(defun fail () shen.fail!)(defun shen.pair (V2562 V2563) (cons V2562 (cons V2563 ())))
|
79
79
|
|
80
|
-
(defun shen.hdtl (
|
80
|
+
(defun shen.hdtl (V2564) (hd (tl V2564)))
|
81
81
|
|
82
|
-
(defun shen.<!> (
|
82
|
+
(defun shen.<!> (V2571) (cond ((and (cons? V2571) (and (cons? (tl V2571)) (= () (tl (tl V2571))))) (cons () (cons (hd V2571) ()))) (true (fail))))
|
83
83
|
|
84
|
-
(defun <e> (
|
84
|
+
(defun <e> (V2576) (cond ((and (cons? V2576) (and (cons? (tl V2576)) (= () (tl (tl V2576))))) (cons (hd V2576) (cons () ()))) (true (shen.f_error <e>))))
|
85
85
|
|
86
86
|
|
87
87
|
|