shen-ruby 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,198 +47,198 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun thaw (V1753) (V1753))
50
+ "(defun thaw (V1759) (V1759))
51
51
 
52
- (defun eval (V1754) (let Macroexpand (shen.walk (lambda V1751 (macroexpand V1751)) V1754) (if (shen.packaged? Macroexpand) (map shen.eval-without-macros (shen.package-contents Macroexpand)) (shen.eval-without-macros Macroexpand))))
52
+ (defun eval (V1760) (let Macroexpand (shen.walk (lambda V1757 (macroexpand V1757)) V1760) (if (shen.packaged? Macroexpand) (map shen.eval-without-macros (shen.package-contents Macroexpand)) (shen.eval-without-macros Macroexpand))))
53
53
 
54
- (defun shen.eval-without-macros (V1755) (eval-kl (shen.elim-define (shen.proc-input+ V1755))))
54
+ (defun shen.eval-without-macros (V1761) (eval-kl (shen.elim-define (shen.proc-input+ V1761))))
55
55
 
56
- (defun shen.proc-input+ (V1756) (cond ((and (cons? V1756) (and (= input+ (hd V1756)) (and (cons? (tl V1756)) (and (cons? (tl (tl V1756))) (= () (tl (tl (tl V1756)))))))) (cons input+ (cons (hd (tl V1756)) (cons (shen.rcons_form (hd (tl (tl V1756)))) ())))) ((cons? V1756) (map shen.proc-input+ V1756)) (true V1756)))
56
+ (defun shen.proc-input+ (V1762) (cond ((and (cons? V1762) (and (= input+ (hd V1762)) (and (cons? (tl V1762)) (and (cons? (tl (tl V1762))) (= () (tl (tl (tl V1762)))))))) (cons input+ (cons (hd (tl V1762)) (cons (shen.rcons_form (hd (tl (tl V1762)))) ())))) ((cons? V1762) (map shen.proc-input+ V1762)) (true V1762)))
57
57
 
58
- (defun shen.elim-define (V1757) (cond ((and (cons? V1757) (and (= define (hd V1757)) (cons? (tl V1757)))) (shen.shen->kl (hd (tl V1757)) (tl (tl V1757)))) ((and (cons? V1757) (and (= defcc (hd V1757)) (cons? (tl V1757)))) (shen.elim-define (shen.yacc V1757))) ((cons? V1757) (map shen.elim-define V1757)) (true V1757)))
58
+ (defun shen.elim-define (V1763) (cond ((and (cons? V1763) (and (= define (hd V1763)) (cons? (tl V1763)))) (shen.shen->kl (hd (tl V1763)) (tl (tl V1763)))) ((and (cons? V1763) (and (= defcc (hd V1763)) (cons? (tl V1763)))) (shen.elim-define (shen.yacc V1763))) ((cons? V1763) (map shen.elim-define V1763)) (true V1763)))
59
59
 
60
- (defun shen.packaged? (V1764) (cond ((and (cons? V1764) (and (= package (hd V1764)) (and (cons? (tl V1764)) (cons? (tl (tl V1764)))))) true) (true false)))
60
+ (defun shen.packaged? (V1770) (cond ((and (cons? V1770) (and (= package (hd V1770)) (and (cons? (tl V1770)) (cons? (tl (tl V1770)))))) true) (true false)))
61
61
 
62
- (defun external (V1765) (trap-error (get V1765 shen.external-symbols (value *property-vector*)) (lambda E (simple-error (cn "package " (shen.app V1765 " has not been used.
62
+ (defun external (V1771) (trap-error (get V1771 shen.external-symbols (value *property-vector*)) (lambda E (simple-error (cn "package " (shen.app V1771 " has not been used.
63
63
  " shen.a))))))
64
64
 
65
- (defun shen.package-contents (V1768) (cond ((and (cons? V1768) (and (= package (hd V1768)) (and (cons? (tl V1768)) (and (= null (hd (tl V1768))) (cons? (tl (tl V1768))))))) (tl (tl (tl V1768)))) ((and (cons? V1768) (and (= package (hd V1768)) (and (cons? (tl V1768)) (cons? (tl (tl V1768)))))) (shen.packageh (hd (tl V1768)) (hd (tl (tl V1768))) (tl (tl (tl V1768))))) (true (shen.sys-error shen.package-contents))))
65
+ (defun shen.package-contents (V1774) (cond ((and (cons? V1774) (and (= package (hd V1774)) (and (cons? (tl V1774)) (and (= null (hd (tl V1774))) (cons? (tl (tl V1774))))))) (tl (tl (tl V1774)))) ((and (cons? V1774) (and (= package (hd V1774)) (and (cons? (tl V1774)) (cons? (tl (tl V1774)))))) (shen.packageh (hd (tl V1774)) (hd (tl (tl V1774))) (tl (tl (tl V1774))))) (true (shen.sys-error shen.package-contents))))
66
66
 
67
- (defun shen.walk (V1769 V1770) (cond ((cons? V1770) (V1769 (map (lambda Z (shen.walk V1769 Z)) V1770))) (true (V1769 V1770))))
67
+ (defun shen.walk (V1775 V1776) (cond ((cons? V1776) (V1775 (map (lambda Z (shen.walk V1775 Z)) V1776))) (true (V1775 V1776))))
68
68
 
69
- (defun compile (V1771 V1772 V1773) (let O (V1771 (cons V1772 (cons () ()))) (if (or (= (fail) O) (not (empty? (hd O)))) (V1773 O) (shen.hdtl O))))
69
+ (defun compile (V1777 V1778 V1779) (let O (V1777 (cons V1778 (cons () ()))) (if (or (= (fail) O) (not (empty? (hd O)))) (V1779 O) (shen.hdtl O))))
70
70
 
71
- (defun fail-if (V1774 V1775) (if (V1774 V1775) (fail) V1775))
71
+ (defun fail-if (V1780 V1781) (if (V1780 V1781) (fail) V1781))
72
72
 
73
- (defun @s (V1776 V1777) (cn V1776 V1777))
73
+ (defun @s (V1782 V1783) (cn V1782 V1783))
74
74
 
75
- (defun tc? (V1782) (value shen.*tc*))
75
+ (defun tc? (V1788) (value shen.*tc*))
76
76
 
77
- (defun ps (V1783) (trap-error (get V1783 shen.source (value *property-vector*)) (lambda E (simple-error (shen.app V1783 " not found.
77
+ (defun ps (V1789) (trap-error (get V1789 shen.source (value *property-vector*)) (lambda E (simple-error (shen.app V1789 " not found.
78
78
  " shen.a)))))
79
79
 
80
80
  (defun stinput () (value *stinput*))
81
81
 
82
- (defun shen.+vector? (V1784) (and (absvector? V1784) (> (<-address V1784 0) 0)))
82
+ (defun shen.+vector? (V1790) (and (absvector? V1790) (> (<-address V1790 0) 0)))
83
83
 
84
- (defun vector (V1785) (let Vector (absvector (+ V1785 1)) (let ZeroStamp (address-> Vector 0 V1785) (let Standard (if (= V1785 0) ZeroStamp (shen.fillvector ZeroStamp 1 V1785 (fail))) Standard))))
84
+ (defun vector (V1791) (let Vector (absvector (+ V1791 1)) (let ZeroStamp (address-> Vector 0 V1791) (let Standard (if (= V1791 0) ZeroStamp (shen.fillvector ZeroStamp 1 V1791 (fail))) Standard))))
85
85
 
86
- (defun shen.fillvector (V1786 V1787 V1788 V1789) (cond ((= V1788 V1787) (address-> V1786 V1788 V1789)) (true (shen.fillvector (address-> V1786 V1787 V1789) (+ 1 V1787) V1788 V1789))))
86
+ (defun shen.fillvector (V1792 V1793 V1794 V1795) (cond ((= V1794 V1793) (address-> V1792 V1794 V1795)) (true (shen.fillvector (address-> V1792 V1793 V1795) (+ 1 V1793) V1794 V1795))))
87
87
 
88
- (defun vector? (V1791) (and (absvector? V1791) (trap-error (>= (<-address V1791 0) 0) (lambda E false))))
88
+ (defun vector? (V1797) (and (absvector? V1797) (trap-error (>= (<-address V1797 0) 0) (lambda E false))))
89
89
 
90
- (defun vector-> (V1792 V1793 V1794) (if (= V1793 0) (simple-error "cannot access 0th element of a vector
91
- ") (address-> V1792 V1793 V1794)))
90
+ (defun vector-> (V1798 V1799 V1800) (if (= V1799 0) (simple-error "cannot access 0th element of a vector
91
+ ") (address-> V1798 V1799 V1800)))
92
92
 
93
- (defun <-vector (V1795 V1796) (if (= V1796 0) (simple-error "cannot access 0th element of a vector
94
- ") (let VectorElement (<-address V1795 V1796) (if (= VectorElement (fail)) (simple-error "vector element not found
93
+ (defun <-vector (V1801 V1802) (if (= V1802 0) (simple-error "cannot access 0th element of a vector
94
+ ") (let VectorElement (<-address V1801 V1802) (if (= VectorElement (fail)) (simple-error "vector element not found
95
95
  ") VectorElement))))
96
96
 
97
- (defun shen.posint? (V1797) (and (integer? V1797) (>= V1797 0)))
97
+ (defun shen.posint? (V1803) (and (integer? V1803) (>= V1803 0)))
98
98
 
99
- (defun limit (V1798) (<-address V1798 0))
99
+ (defun limit (V1804) (<-address V1804 0))
100
100
 
101
- (defun symbol? (V1799) (cond ((or (boolean? V1799) (or (number? V1799) (string? V1799))) false) (true (trap-error (let String (str V1799) (shen.analyse-symbol? String)) (lambda E false)))))
101
+ (defun symbol? (V1805) (cond ((or (boolean? V1805) (or (number? V1805) (string? V1805))) false) (true (trap-error (let String (str V1805) (shen.analyse-symbol? String)) (lambda E false)))))
102
102
 
103
- (defun shen.analyse-symbol? (V1800) (cond ((shen.+string? V1800) (and (shen.alpha? (pos V1800 0)) (shen.alphanums? (tlstr V1800)))) (true (shen.sys-error shen.analyse-symbol?))))
103
+ (defun shen.analyse-symbol? (V1806) (cond ((shen.+string? V1806) (and (shen.alpha? (pos V1806 0)) (shen.alphanums? (tlstr V1806)))) (true (shen.sys-error shen.analyse-symbol?))))
104
104
 
105
- (defun shen.alpha? (V1801) (element? V1801 (cons "A" (cons "B" (cons "C" (cons "D" (cons "E" (cons "F" (cons "G" (cons "H" (cons "I" (cons "J" (cons "K" (cons "L" (cons "M" (cons "N" (cons "O" (cons "P" (cons "Q" (cons "R" (cons "S" (cons "T" (cons "U" (cons "V" (cons "W" (cons "X" (cons "Y" (cons "Z" (cons "a" (cons "b" (cons "c" (cons "d" (cons "e" (cons "f" (cons "g" (cons "h" (cons "i" (cons "j" (cons "k" (cons "l" (cons "m" (cons "n" (cons "o" (cons "p" (cons "q" (cons "r" (cons "s" (cons "t" (cons "u" (cons "v" (cons "w" (cons "x" (cons "y" (cons "z" (cons "=" (cons "*" (cons "/" (cons "+" (cons "-" (cons "_" (cons "?" (cons "$" (cons "!" (cons "@" (cons "~" (cons ">" (cons "<" (cons "&" (cons "%" (cons "{" (cons "}" (cons ":" (cons ";" (cons "`" (cons "#" (cons "'" (cons "." ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
105
+ (defun shen.alpha? (V1807) (element? V1807 (cons "A" (cons "B" (cons "C" (cons "D" (cons "E" (cons "F" (cons "G" (cons "H" (cons "I" (cons "J" (cons "K" (cons "L" (cons "M" (cons "N" (cons "O" (cons "P" (cons "Q" (cons "R" (cons "S" (cons "T" (cons "U" (cons "V" (cons "W" (cons "X" (cons "Y" (cons "Z" (cons "a" (cons "b" (cons "c" (cons "d" (cons "e" (cons "f" (cons "g" (cons "h" (cons "i" (cons "j" (cons "k" (cons "l" (cons "m" (cons "n" (cons "o" (cons "p" (cons "q" (cons "r" (cons "s" (cons "t" (cons "u" (cons "v" (cons "w" (cons "x" (cons "y" (cons "z" (cons "=" (cons "*" (cons "/" (cons "+" (cons "-" (cons "_" (cons "?" (cons "$" (cons "!" (cons "@" (cons "~" (cons ">" (cons "<" (cons "&" (cons "%" (cons "{" (cons "}" (cons ":" (cons ";" (cons "`" (cons "#" (cons "'" (cons "." ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
106
106
 
107
- (defun shen.alphanums? (V1802) (cond ((= "" V1802) true) ((shen.+string? V1802) (and (shen.alphanum? (pos V1802 0)) (shen.alphanums? (tlstr V1802)))) (true (shen.sys-error shen.alphanums?))))
107
+ (defun shen.alphanums? (V1808) (cond ((= "" V1808) true) ((shen.+string? V1808) (and (shen.alphanum? (pos V1808 0)) (shen.alphanums? (tlstr V1808)))) (true (shen.sys-error shen.alphanums?))))
108
108
 
109
- (defun shen.alphanum? (V1803) (or (shen.alpha? V1803) (shen.digit? V1803)))
109
+ (defun shen.alphanum? (V1809) (or (shen.alpha? V1809) (shen.digit? V1809)))
110
110
 
111
- (defun shen.digit? (V1804) (element? V1804 (cons "1" (cons "2" (cons "3" (cons "4" (cons "5" (cons "6" (cons "7" (cons "8" (cons "9" (cons "0" ()))))))))))))
111
+ (defun shen.digit? (V1810) (element? V1810 (cons "1" (cons "2" (cons "3" (cons "4" (cons "5" (cons "6" (cons "7" (cons "8" (cons "9" (cons "0" ()))))))))))))
112
112
 
113
- (defun variable? (V1805) (cond ((or (boolean? V1805) (or (number? V1805) (string? V1805))) false) (true (trap-error (let String (str V1805) (shen.analyse-variable? String)) (lambda E false)))))
113
+ (defun variable? (V1811) (cond ((or (boolean? V1811) (or (number? V1811) (string? V1811))) false) (true (trap-error (let String (str V1811) (shen.analyse-variable? String)) (lambda E false)))))
114
114
 
115
- (defun shen.analyse-variable? (V1806) (cond ((shen.+string? V1806) (and (shen.uppercase? (pos V1806 0)) (shen.alphanums? (tlstr V1806)))) (true (shen.sys-error shen.analyse-variable?))))
115
+ (defun shen.analyse-variable? (V1812) (cond ((shen.+string? V1812) (and (shen.uppercase? (pos V1812 0)) (shen.alphanums? (tlstr V1812)))) (true (shen.sys-error shen.analyse-variable?))))
116
116
 
117
- (defun shen.uppercase? (V1807) (element? V1807 (cons "A" (cons "B" (cons "C" (cons "D" (cons "E" (cons "F" (cons "G" (cons "H" (cons "I" (cons "J" (cons "K" (cons "L" (cons "M" (cons "N" (cons "O" (cons "P" (cons "Q" (cons "R" (cons "S" (cons "T" (cons "U" (cons "V" (cons "W" (cons "X" (cons "Y" (cons "Z" ()))))))))))))))))))))))))))))
117
+ (defun shen.uppercase? (V1813) (element? V1813 (cons "A" (cons "B" (cons "C" (cons "D" (cons "E" (cons "F" (cons "G" (cons "H" (cons "I" (cons "J" (cons "K" (cons "L" (cons "M" (cons "N" (cons "O" (cons "P" (cons "Q" (cons "R" (cons "S" (cons "T" (cons "U" (cons "V" (cons "W" (cons "X" (cons "Y" (cons "Z" ()))))))))))))))))))))))))))))
118
118
 
119
- (defun gensym (V1808) (concat V1808 (set shen.*gensym* (+ 1 (value shen.*gensym*)))))
119
+ (defun gensym (V1814) (concat V1814 (set shen.*gensym* (+ 1 (value shen.*gensym*)))))
120
120
 
121
- (defun concat (V1809 V1810) (intern (cn (str V1809) (str V1810))))
121
+ (defun concat (V1815 V1816) (intern (cn (str V1815) (str V1816))))
122
122
 
123
- (defun @p (V1811 V1812) (let Vector (absvector 3) (let Tag (address-> Vector 0 shen.tuple) (let Fst (address-> Vector 1 V1811) (let Snd (address-> Vector 2 V1812) Vector)))))
123
+ (defun @p (V1817 V1818) (let Vector (absvector 3) (let Tag (address-> Vector 0 shen.tuple) (let Fst (address-> Vector 1 V1817) (let Snd (address-> Vector 2 V1818) Vector)))))
124
124
 
125
- (defun fst (V1813) (<-address V1813 1))
125
+ (defun fst (V1819) (<-address V1819 1))
126
126
 
127
- (defun snd (V1814) (<-address V1814 2))
127
+ (defun snd (V1820) (<-address V1820 2))
128
128
 
129
- (defun tuple? (V1815) (trap-error (and (absvector? V1815) (= shen.tuple (<-address V1815 0))) (lambda E false)))
129
+ (defun tuple? (V1821) (trap-error (and (absvector? V1821) (= shen.tuple (<-address V1821 0))) (lambda E false)))
130
130
 
131
- (defun append (V1816 V1817) (cond ((= () V1816) V1817) ((cons? V1816) (cons (hd V1816) (append (tl V1816) V1817))) (true (shen.sys-error append))))
131
+ (defun append (V1822 V1823) (cond ((= () V1822) V1823) ((cons? V1822) (cons (hd V1822) (append (tl V1822) V1823))) (true (shen.sys-error append))))
132
132
 
133
- (defun @v (V1818 V1819) (let Limit (limit V1819) (let NewVector (vector (+ Limit 1)) (let X+NewVector (vector-> NewVector 1 V1818) (if (= Limit 0) X+NewVector (shen.@v-help V1819 1 Limit X+NewVector))))))
133
+ (defun @v (V1824 V1825) (let Limit (limit V1825) (let NewVector (vector (+ Limit 1)) (let X+NewVector (vector-> NewVector 1 V1824) (if (= Limit 0) X+NewVector (shen.@v-help V1825 1 Limit X+NewVector))))))
134
134
 
135
- (defun shen.@v-help (V1820 V1821 V1822 V1823) (cond ((= V1822 V1821) (shen.copyfromvector V1820 V1823 V1822 (+ V1822 1))) (true (shen.@v-help V1820 (+ V1821 1) V1822 (shen.copyfromvector V1820 V1823 V1821 (+ V1821 1))))))
135
+ (defun shen.@v-help (V1826 V1827 V1828 V1829) (cond ((= V1828 V1827) (shen.copyfromvector V1826 V1829 V1828 (+ V1828 1))) (true (shen.@v-help V1826 (+ V1827 1) V1828 (shen.copyfromvector V1826 V1829 V1827 (+ V1827 1))))))
136
136
 
137
- (defun shen.copyfromvector (V1825 V1826 V1827 V1828) (trap-error (vector-> V1826 V1828 (<-vector V1825 V1827)) (lambda E V1826)))
137
+ (defun shen.copyfromvector (V1831 V1832 V1833 V1834) (trap-error (vector-> V1832 V1834 (<-vector V1831 V1833)) (lambda E V1832)))
138
138
 
139
- (defun hdv (V1829) (trap-error (<-vector V1829 1) (lambda E (simple-error (cn "hdv needs a non-empty vector as an argument; not " (shen.app V1829 "
139
+ (defun hdv (V1835) (trap-error (<-vector V1835 1) (lambda E (simple-error (cn "hdv needs a non-empty vector as an argument; not " (shen.app V1835 "
140
140
  " shen.s))))))
141
141
 
142
- (defun tlv (V1830) (let Limit (limit V1830) (if (= Limit 0) (simple-error "cannot take the tail of the empty vector
143
- ") (if (= Limit 1) (vector 0) (let NewVector (vector (- Limit 1)) (shen.tlv-help V1830 2 Limit (vector (- Limit 1))))))))
142
+ (defun tlv (V1836) (let Limit (limit V1836) (if (= Limit 0) (simple-error "cannot take the tail of the empty vector
143
+ ") (if (= Limit 1) (vector 0) (let NewVector (vector (- Limit 1)) (shen.tlv-help V1836 2 Limit (vector (- Limit 1))))))))
144
144
 
145
- (defun shen.tlv-help (V1831 V1832 V1833 V1834) (cond ((= V1833 V1832) (shen.copyfromvector V1831 V1834 V1833 (- V1833 1))) (true (shen.tlv-help V1831 (+ V1832 1) V1833 (shen.copyfromvector V1831 V1834 V1832 (- V1832 1))))))
145
+ (defun shen.tlv-help (V1837 V1838 V1839 V1840) (cond ((= V1839 V1838) (shen.copyfromvector V1837 V1840 V1839 (- V1839 1))) (true (shen.tlv-help V1837 (+ V1838 1) V1839 (shen.copyfromvector V1837 V1840 V1838 (- V1838 1))))))
146
146
 
147
- (defun assoc (V1844 V1845) (cond ((= () V1845) ()) ((and (cons? V1845) (and (cons? (hd V1845)) (= (hd (hd V1845)) V1844))) (hd V1845)) ((cons? V1845) (assoc V1844 (tl V1845))) (true (shen.sys-error assoc))))
147
+ (defun assoc (V1850 V1851) (cond ((= () V1851) ()) ((and (cons? V1851) (and (cons? (hd V1851)) (= (hd (hd V1851)) V1850))) (hd V1851)) ((cons? V1851) (assoc V1850 (tl V1851))) (true (shen.sys-error assoc))))
148
148
 
149
- (defun boolean? (V1851) (cond ((= true V1851) true) ((= false V1851) true) (true false)))
149
+ (defun boolean? (V1857) (cond ((= true V1857) true) ((= false V1857) true) (true false)))
150
150
 
151
- (defun nl (V1852) (cond ((= 0 V1852) 0) (true (do (pr "
152
- " (stoutput)) (nl (- V1852 1))))))
151
+ (defun nl (V1858) (cond ((= 0 V1858) 0) (true (do (pr "
152
+ " (stoutput)) (nl (- V1858 1))))))
153
153
 
154
- (defun difference (V1855 V1856) (cond ((= () V1855) ()) ((cons? V1855) (if (element? (hd V1855) V1856) (difference (tl V1855) V1856) (cons (hd V1855) (difference (tl V1855) V1856)))) (true (shen.sys-error difference))))
154
+ (defun difference (V1861 V1862) (cond ((= () V1861) ()) ((cons? V1861) (if (element? (hd V1861) V1862) (difference (tl V1861) V1862) (cons (hd V1861) (difference (tl V1861) V1862)))) (true (shen.sys-error difference))))
155
155
 
156
- (defun do (V1857 V1858) V1858)
156
+ (defun do (V1863 V1864) V1864)
157
157
 
158
- (defun element? (V1867 V1868) (cond ((= () V1868) false) ((and (cons? V1868) (= (hd V1868) V1867)) true) ((cons? V1868) (element? V1867 (tl V1868))) (true (shen.sys-error element?))))
158
+ (defun element? (V1873 V1874) (cond ((= () V1874) false) ((and (cons? V1874) (= (hd V1874) V1873)) true) ((cons? V1874) (element? V1873 (tl V1874))) (true (shen.sys-error element?))))
159
159
 
160
- (defun empty? (V1874) (cond ((= () V1874) true) (true false)))
160
+ (defun empty? (V1880) (cond ((= () V1880) true) (true false)))
161
161
 
162
- (defun fix (V1875 V1876) (shen.fix-help V1875 V1876 (V1875 V1876)))
162
+ (defun fix (V1881 V1882) (shen.fix-help V1881 V1882 (V1881 V1882)))
163
163
 
164
- (defun shen.fix-help (V1883 V1884 V1885) (cond ((= V1885 V1884) V1885) (true (shen.fix-help V1883 V1885 (V1883 V1885)))))
164
+ (defun shen.fix-help (V1889 V1890 V1891) (cond ((= V1891 V1890) V1891) (true (shen.fix-help V1889 V1891 (V1889 V1891)))))
165
165
 
166
- (defun put (V1887 V1888 V1889 V1890) (let N (hash V1887 (limit V1890)) (let Entry (trap-error (<-vector V1890 N) (lambda E ())) (let Change (vector-> V1890 N (shen.change-pointer-value V1887 V1888 V1889 Entry)) V1889))))
166
+ (defun put (V1893 V1894 V1895 V1896) (let N (hash V1893 (limit V1896)) (let Entry (trap-error (<-vector V1896 N) (lambda E ())) (let Change (vector-> V1896 N (shen.change-pointer-value V1893 V1894 V1895 Entry)) V1895))))
167
167
 
168
- (defun shen.change-pointer-value (V1893 V1894 V1895 V1896) (cond ((= () V1896) (cons (cons (cons V1893 (cons V1894 ())) V1895) ())) ((and (cons? V1896) (and (cons? (hd V1896)) (and (cons? (hd (hd V1896))) (and (cons? (tl (hd (hd V1896)))) (and (= () (tl (tl (hd (hd V1896))))) (and (= (hd (tl (hd (hd V1896)))) V1894) (= (hd (hd (hd V1896))) V1893))))))) (cons (cons (hd (hd V1896)) V1895) (tl V1896))) ((cons? V1896) (cons (hd V1896) (shen.change-pointer-value V1893 V1894 V1895 (tl V1896)))) (true (shen.sys-error shen.change-pointer-value))))
168
+ (defun shen.change-pointer-value (V1899 V1900 V1901 V1902) (cond ((= () V1902) (cons (cons (cons V1899 (cons V1900 ())) V1901) ())) ((and (cons? V1902) (and (cons? (hd V1902)) (and (cons? (hd (hd V1902))) (and (cons? (tl (hd (hd V1902)))) (and (= () (tl (tl (hd (hd V1902))))) (and (= (hd (tl (hd (hd V1902)))) V1900) (= (hd (hd (hd V1902))) V1899))))))) (cons (cons (hd (hd V1902)) V1901) (tl V1902))) ((cons? V1902) (cons (hd V1902) (shen.change-pointer-value V1899 V1900 V1901 (tl V1902)))) (true (shen.sys-error shen.change-pointer-value))))
169
169
 
170
- (defun get (V1899 V1900 V1901) (let N (hash V1899 (limit V1901)) (let Entry (trap-error (<-vector V1901 N) (lambda E (simple-error "pointer not found
171
- "))) (let Result (assoc (cons V1899 (cons V1900 ())) Entry) (if (empty? Result) (simple-error "value not found
170
+ (defun get (V1905 V1906 V1907) (let N (hash V1905 (limit V1907)) (let Entry (trap-error (<-vector V1907 N) (lambda E (simple-error "pointer not found
171
+ "))) (let Result (assoc (cons V1905 (cons V1906 ())) Entry) (if (empty? Result) (simple-error "value not found
172
172
  ") (tl Result))))))
173
173
 
174
- (defun hash (V1902 V1903) (let Hash (shen.mod (shen.sum (map (lambda V1752 (string->n V1752)) (explode V1902))) V1903) (if (= 0 Hash) 1 Hash)))
174
+ (defun hash (V1908 V1909) (let Hash (shen.mod (shen.sum (map (lambda V1758 (string->n V1758)) (explode V1908))) V1909) (if (= 0 Hash) 1 Hash)))
175
175
 
176
- (defun shen.mod (V1904 V1905) (shen.modh V1904 (shen.multiples V1904 (cons V1905 ()))))
176
+ (defun shen.mod (V1910 V1911) (shen.modh V1910 (shen.multiples V1910 (cons V1911 ()))))
177
177
 
178
- (defun shen.multiples (V1906 V1907) (cond ((and (cons? V1907) (> (hd V1907) V1906)) (tl V1907)) ((cons? V1907) (shen.multiples V1906 (cons (* 2 (hd V1907)) V1907))) (true (shen.sys-error shen.multiples))))
178
+ (defun shen.multiples (V1912 V1913) (cond ((and (cons? V1913) (> (hd V1913) V1912)) (tl V1913)) ((cons? V1913) (shen.multiples V1912 (cons (* 2 (hd V1913)) V1913))) (true (shen.sys-error shen.multiples))))
179
179
 
180
- (defun shen.modh (V1910 V1911) (cond ((= 0 V1910) 0) ((= () V1911) V1910) ((and (cons? V1911) (> (hd V1911) V1910)) (if (empty? (tl V1911)) V1910 (shen.modh V1910 (tl V1911)))) ((cons? V1911) (shen.modh (- V1910 (hd V1911)) V1911)) (true (shen.sys-error shen.modh))))
180
+ (defun shen.modh (V1916 V1917) (cond ((= 0 V1916) 0) ((= () V1917) V1916) ((and (cons? V1917) (> (hd V1917) V1916)) (if (empty? (tl V1917)) V1916 (shen.modh V1916 (tl V1917)))) ((cons? V1917) (shen.modh (- V1916 (hd V1917)) V1917)) (true (shen.sys-error shen.modh))))
181
181
 
182
- (defun shen.sum (V1912) (cond ((= () V1912) 0) ((cons? V1912) (+ (hd V1912) (shen.sum (tl V1912)))) (true (shen.sys-error shen.sum))))
182
+ (defun shen.sum (V1918) (cond ((= () V1918) 0) ((cons? V1918) (+ (hd V1918) (shen.sum (tl V1918)))) (true (shen.sys-error shen.sum))))
183
183
 
184
- (defun head (V1919) (cond ((cons? V1919) (hd V1919)) (true (simple-error "head expects a non-empty list"))))
184
+ (defun head (V1925) (cond ((cons? V1925) (hd V1925)) (true (simple-error "head expects a non-empty list"))))
185
185
 
186
- (defun tail (V1926) (cond ((cons? V1926) (tl V1926)) (true (simple-error "tail expects a non-empty list"))))
186
+ (defun tail (V1932) (cond ((cons? V1932) (tl V1932)) (true (simple-error "tail expects a non-empty list"))))
187
187
 
188
- (defun hdstr (V1927) (pos V1927 0))
188
+ (defun hdstr (V1933) (pos V1933 0))
189
189
 
190
- (defun intersection (V1930 V1931) (cond ((= () V1930) ()) ((cons? V1930) (if (element? (hd V1930) V1931) (cons (hd V1930) (intersection (tl V1930) V1931)) (intersection (tl V1930) V1931))) (true (shen.sys-error intersection))))
190
+ (defun intersection (V1936 V1937) (cond ((= () V1936) ()) ((cons? V1936) (if (element? (hd V1936) V1937) (cons (hd V1936) (intersection (tl V1936) V1937)) (intersection (tl V1936) V1937))) (true (shen.sys-error intersection))))
191
191
 
192
- (defun reverse (V1932) (shen.reverse_help V1932 ()))
192
+ (defun reverse (V1938) (shen.reverse_help V1938 ()))
193
193
 
194
- (defun shen.reverse_help (V1933 V1934) (cond ((= () V1933) V1934) ((cons? V1933) (shen.reverse_help (tl V1933) (cons (hd V1933) V1934))) (true (shen.sys-error shen.reverse_help))))
194
+ (defun shen.reverse_help (V1939 V1940) (cond ((= () V1939) V1940) ((cons? V1939) (shen.reverse_help (tl V1939) (cons (hd V1939) V1940))) (true (shen.sys-error shen.reverse_help))))
195
195
 
196
- (defun union (V1935 V1936) (cond ((= () V1935) V1936) ((cons? V1935) (if (element? (hd V1935) V1936) (union (tl V1935) V1936) (cons (hd V1935) (union (tl V1935) V1936)))) (true (shen.sys-error union))))
196
+ (defun union (V1941 V1942) (cond ((= () V1941) V1942) ((cons? V1941) (if (element? (hd V1941) V1942) (union (tl V1941) V1942) (cons (hd V1941) (union (tl V1941) V1942)))) (true (shen.sys-error union))))
197
197
 
198
- (defun y-or-n? (V1937) (let Message (pr (shen.proc-nl V1937) (stoutput)) (let Y-or-N (pr " (y/n) " (stoutput)) (let Input (shen.app (input) "" shen.s) (if (= "y" Input) true (if (= "n" Input) false (do (pr "please answer y or n
199
- " (stoutput)) (y-or-n? V1937))))))))
198
+ (defun y-or-n? (V1943) (let Message (pr (shen.proc-nl V1943) (stoutput)) (let Y-or-N (pr " (y/n) " (stoutput)) (let Input (shen.app (input) "" shen.s) (if (= "y" Input) true (if (= "n" Input) false (do (pr "please answer y or n
199
+ " (stoutput)) (y-or-n? V1943))))))))
200
200
 
201
- (defun not (V1938) (if V1938 false true))
201
+ (defun not (V1944) (if V1944 false true))
202
202
 
203
- (defun subst (V1947 V1948 V1949) (cond ((= V1949 V1948) V1947) ((cons? V1949) (cons (subst V1947 V1948 (hd V1949)) (subst V1947 V1948 (tl V1949)))) (true V1949)))
203
+ (defun subst (V1953 V1954 V1955) (cond ((= V1955 V1954) V1953) ((cons? V1955) (cons (subst V1953 V1954 (hd V1955)) (subst V1953 V1954 (tl V1955)))) (true V1955)))
204
204
 
205
- (defun explode (V1951) (shen.explode-h (shen.app V1951 "" shen.a)))
205
+ (defun explode (V1957) (shen.explode-h (shen.app V1957 "" shen.a)))
206
206
 
207
- (defun shen.explode-h (V1952) (cond ((= "" V1952) ()) ((shen.+string? V1952) (cons (pos V1952 0) (shen.explode-h (tlstr V1952)))) (true (shen.sys-error shen.explode-h))))
207
+ (defun shen.explode-h (V1958) (cond ((= "" V1958) ()) ((shen.+string? V1958) (cons (pos V1958 0) (shen.explode-h (tlstr V1958)))) (true (shen.sys-error shen.explode-h))))
208
208
 
209
- (defun cd (V1953) (set *home-directory* (if (= V1953 "") "" (shen.app V1953 "/" shen.a))))
209
+ (defun cd (V1959) (set *home-directory* (if (= V1959 "") "" (shen.app V1959 "/" shen.a))))
210
210
 
211
- (defun map (V1954 V1955) (shen.map-h V1954 V1955 ()))
211
+ (defun map (V1960 V1961) (shen.map-h V1960 V1961 ()))
212
212
 
213
- (defun shen.map-h (V1958 V1959 V1960) (cond ((= () V1959) (reverse V1960)) ((cons? V1959) (shen.map-h V1958 (tl V1959) (cons (V1958 (hd V1959)) V1960))) (true (shen.sys-error shen.map-h))))
213
+ (defun shen.map-h (V1964 V1965 V1966) (cond ((= () V1965) (reverse V1966)) ((cons? V1965) (shen.map-h V1964 (tl V1965) (cons (V1964 (hd V1965)) V1966))) (true (shen.sys-error shen.map-h))))
214
214
 
215
- (defun length (V1961) (shen.length-h V1961 0))
215
+ (defun length (V1967) (shen.length-h V1967 0))
216
216
 
217
- (defun shen.length-h (V1962 V1963) (cond ((= () V1962) V1963) (true (shen.length-h (tl V1962) (+ V1963 1)))))
217
+ (defun shen.length-h (V1968 V1969) (cond ((= () V1968) V1969) (true (shen.length-h (tl V1968) (+ V1969 1)))))
218
218
 
219
- (defun occurrences (V1972 V1973) (cond ((= V1973 V1972) 1) ((cons? V1973) (+ (occurrences V1972 (hd V1973)) (occurrences V1972 (tl V1973)))) (true 0)))
219
+ (defun occurrences (V1978 V1979) (cond ((= V1979 V1978) 1) ((cons? V1979) (+ (occurrences V1978 (hd V1979)) (occurrences V1978 (tl V1979)))) (true 0)))
220
220
 
221
- (defun nth (V1981 V1982) (cond ((and (= 1 V1981) (cons? V1982)) (hd V1982)) ((cons? V1982) (nth (- V1981 1) (tl V1982))) (true (shen.sys-error nth))))
221
+ (defun nth (V1987 V1988) (cond ((and (= 1 V1987) (cons? V1988)) (hd V1988)) ((cons? V1988) (nth (- V1987 1) (tl V1988))) (true (shen.sys-error nth))))
222
222
 
223
- (defun integer? (V1983) (and (number? V1983) (let Abs (shen.abs V1983) (shen.integer-test? Abs (shen.magless Abs 1)))))
223
+ (defun integer? (V1989) (and (number? V1989) (let Abs (shen.abs V1989) (shen.integer-test? Abs (shen.magless Abs 1)))))
224
224
 
225
- (defun shen.abs (V1984) (if (> V1984 0) V1984 (- 0 V1984)))
225
+ (defun shen.abs (V1990) (if (> V1990 0) V1990 (- 0 V1990)))
226
226
 
227
- (defun shen.magless (V1985 V1986) (let Nx2 (* V1986 2) (if (> Nx2 V1985) V1986 (shen.magless V1985 Nx2))))
227
+ (defun shen.magless (V1991 V1992) (let Nx2 (* V1992 2) (if (> Nx2 V1991) V1992 (shen.magless V1991 Nx2))))
228
228
 
229
- (defun shen.integer-test? (V1990 V1991) (cond ((= 0 V1990) true) ((> 1 V1990) false) (true (let Abs-N (- V1990 V1991) (if (> 0 Abs-N) (integer? V1990) (shen.integer-test? Abs-N V1991))))))
229
+ (defun shen.integer-test? (V1996 V1997) (cond ((= 0 V1996) true) ((> 1 V1996) false) (true (let Abs-N (- V1996 V1997) (if (> 0 Abs-N) (integer? V1996) (shen.integer-test? Abs-N V1997))))))
230
230
 
231
- (defun mapcan (V1994 V1995) (cond ((= () V1995) ()) ((cons? V1995) (append (V1994 (hd V1995)) (mapcan V1994 (tl V1995)))) (true (shen.sys-error mapcan))))
231
+ (defun mapcan (V2000 V2001) (cond ((= () V2001) ()) ((cons? V2001) (append (V2000 (hd V2001)) (mapcan V2000 (tl V2001)))) (true (shen.sys-error mapcan))))
232
232
 
233
- (defun read-file-as-bytelist (V1996) (let Stream (open file V1996 in) (let Byte (read-byte Stream) (let Bytes (shen.read-file-as-bytelist-help Stream Byte ()) (let Close (close Stream) (reverse Bytes))))))
233
+ (defun read-file-as-bytelist (V2002) (let Stream (open file V2002 in) (let Byte (read-byte Stream) (let Bytes (shen.read-file-as-bytelist-help Stream Byte ()) (let Close (close Stream) (reverse Bytes))))))
234
234
 
235
- (defun shen.read-file-as-bytelist-help (V1997 V1998 V1999) (cond ((= -1 V1998) V1999) (true (shen.read-file-as-bytelist-help V1997 (read-byte V1997) (cons V1998 V1999)))))
235
+ (defun shen.read-file-as-bytelist-help (V2003 V2004 V2005) (cond ((= -1 V2004) V2005) (true (shen.read-file-as-bytelist-help V2003 (read-byte V2003) (cons V2004 V2005)))))
236
236
 
237
- (defun read-file-as-string (V2000) (let Stream (open file V2000 in) (shen.rfas-h Stream (read-byte Stream) "")))
237
+ (defun read-file-as-string (V2006) (let Stream (open file V2006 in) (shen.rfas-h Stream (read-byte Stream) "")))
238
238
 
239
- (defun shen.rfas-h (V2001 V2002 V2003) (cond ((= -1 V2002) (do (close V2001) V2003)) (true (shen.rfas-h V2001 (read-byte V2001) (cn V2003 (n->string V2002))))))
239
+ (defun shen.rfas-h (V2007 V2008 V2009) (cond ((= -1 V2008) (do (close V2007) V2009)) (true (shen.rfas-h V2007 (read-byte V2007) (cn V2009 (n->string V2008))))))
240
240
 
241
- (defun == (V2012 V2013) (cond ((= V2013 V2012) true) (true false)))
241
+ (defun == (V2018 V2019) (cond ((= V2019 V2018) true) (true false)))
242
242
 
243
243
  (defun abort () (simple-error ""))
244
244
 
@@ -246,21 +246,21 @@
246
246
 
247
247
  (defun input () (eval (read)))
248
248
 
249
- (defun input+ (V2019 V2020) (let Input (read) (let Check (shen.typecheck Input V2020) (if (= false Check) (do (pr (cn "input is not of type " (shen.app V2020 ": please re-enter " shen.r)) (stoutput)) (input+ : V2020)) (eval Input)))))
249
+ (defun input+ (V2025 V2026) (let Input (read) (let Check (shen.typecheck Input V2026) (if (= false Check) (do (pr (cn "input is not of type " (shen.app V2026 ": please re-enter " shen.r)) (stoutput)) (input+ : V2026)) (eval Input)))))
250
250
 
251
- (defun bound? (V2021) (and (symbol? V2021) (let Val (trap-error (value V2021) (lambda E shen.this-symbol-is-unbound)) (if (= Val shen.this-symbol-is-unbound) false true))))
251
+ (defun bound? (V2027) (and (symbol? V2027) (let Val (trap-error (value V2027) (lambda E shen.this-symbol-is-unbound)) (if (= Val shen.this-symbol-is-unbound) false true))))
252
252
 
253
- (defun shen.string->bytes (V2022) (cond ((= "" V2022) ()) (true (cons (string->n (pos V2022 0)) (shen.string->bytes (tlstr V2022))))))
253
+ (defun shen.string->bytes (V2028) (cond ((= "" V2028) ()) (true (cons (string->n (pos V2028 0)) (shen.string->bytes (tlstr V2028))))))
254
254
 
255
- (defun maxinferences (V2023) (set shen.*maxinferences* V2023))
255
+ (defun maxinferences (V2029) (set shen.*maxinferences* V2029))
256
256
 
257
257
  (defun inferences () (value shen.*infs*))
258
258
 
259
- (defun protect (V2024) V2024)
259
+ (defun protect (V2030) V2030)
260
260
 
261
261
  (defun stoutput () (value *stoutput*))
262
262
 
263
- (defun string->symbol (V2025) (let Symbol (intern V2025) (if (symbol? Symbol) Symbol (simple-error (cn "cannot intern " (shen.app V2025 " to a symbol" shen.s))))))
263
+ (defun string->symbol (V2031) (let Symbol (intern V2031) (if (symbol? Symbol) Symbol (simple-error (cn "cannot intern " (shen.app V2031 " to a symbol" shen.s))))))
264
264
 
265
265
 
266
266
 
@@ -47,128 +47,124 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun shen.typecheck (V2753 V2754) (let Curry (shen.curry V2753) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.normalise-type (shen.curry-type V2754)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
50
+ "(defun shen.typecheck (V2785 V2786) (let Curry (shen.curry V2785) (let ProcessN (shen.start-new-prolog-process) (let Type (shen.insert-prolog-variables (shen.demodulate (shen.curry-type V2786)) ProcessN) (let Continuation (freeze (return Type ProcessN shen.void)) (shen.t* (cons Curry (cons : (cons Type ()))) () ProcessN Continuation))))))
51
51
 
52
- (defun shen.curry (V2755) (cond ((and (cons? V2755) (shen.special? (hd V2755))) (cons (hd V2755) (map shen.curry (tl V2755)))) ((and (cons? V2755) (and (cons? (tl V2755)) (shen.extraspecial? (hd V2755)))) V2755) ((and (cons? V2755) (and (cons? (tl V2755)) (cons? (tl (tl V2755))))) (shen.curry (cons (cons (hd V2755) (cons (hd (tl V2755)) ())) (tl (tl V2755))))) ((and (cons? V2755) (and (cons? (tl V2755)) (= () (tl (tl V2755))))) (cons (shen.curry (hd V2755)) (cons (shen.curry (hd (tl V2755))) ()))) (true V2755)))
52
+ (defun shen.curry (V2787) (cond ((and (cons? V2787) (shen.special? (hd V2787))) (cons (hd V2787) (map shen.curry (tl V2787)))) ((and (cons? V2787) (and (cons? (tl V2787)) (shen.extraspecial? (hd V2787)))) V2787) ((and (cons? V2787) (and (cons? (tl V2787)) (cons? (tl (tl V2787))))) (shen.curry (cons (cons (hd V2787) (cons (hd (tl V2787)) ())) (tl (tl V2787))))) ((and (cons? V2787) (and (cons? (tl V2787)) (= () (tl (tl V2787))))) (cons (shen.curry (hd V2787)) (cons (shen.curry (hd (tl V2787))) ()))) (true V2787)))
53
53
 
54
- (defun shen.special? (V2756) (element? V2756 (value shen.*special*)))
54
+ (defun shen.special? (V2788) (element? V2788 (value shen.*special*)))
55
55
 
56
- (defun shen.extraspecial? (V2757) (element? V2757 (value shen.*extraspecial*)))
56
+ (defun shen.extraspecial? (V2789) (element? V2789 (value shen.*extraspecial*)))
57
57
 
58
- (defun shen.t* (V2758 V2759 V2760 V2761) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2760) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2760 (freeze (bind Error (shen.errormaxinfs) V2760 V2761))))) (if (= Case false) (let Case (let V2747 (shen.lazyderef V2758 V2760) (if (= fail V2747) (do (shen.incinfs) (cut Throwcontrol V2760 (freeze (shen.prolog-failure V2760 V2761)))) false)) (if (= Case false) (let Case (let V2748 (shen.lazyderef V2758 V2760) (if (cons? V2748) (let X (hd V2748) (let V2749 (shen.lazyderef (tl V2748) V2760) (if (cons? V2749) (let V2750 (shen.lazyderef (hd V2749) V2760) (if (= : V2750) (let V2751 (shen.lazyderef (tl V2749) V2760) (if (cons? V2751) (let A (hd V2751) (let V2752 (shen.lazyderef (tl V2751) V2760) (if (= () V2752) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2760 (freeze (cut Throwcontrol V2760 (freeze (shen.th* X A V2759 V2760 V2761)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2760) (do (shen.incinfs) (shen.show V2758 V2759 V2760 (freeze (bind Datatypes (value shen.*datatypes*) V2760 (freeze (shen.udefs* V2758 V2759 Datatypes V2760 V2761))))))) Case)) Case)) Case)))))
58
+ (defun shen.t* (V2790 V2791 V2792 V2793) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let Error (shen.newpv V2792) (do (shen.incinfs) (fwhen (shen.maxinfexceeded?) V2792 (freeze (bind Error (shen.errormaxinfs) V2792 V2793))))) (if (= Case false) (let Case (let V2779 (shen.lazyderef V2790 V2792) (if (= fail V2779) (do (shen.incinfs) (cut Throwcontrol V2792 (freeze (shen.prolog-failure V2792 V2793)))) false)) (if (= Case false) (let Case (let V2780 (shen.lazyderef V2790 V2792) (if (cons? V2780) (let X (hd V2780) (let V2781 (shen.lazyderef (tl V2780) V2792) (if (cons? V2781) (let V2782 (shen.lazyderef (hd V2781) V2792) (if (= : V2782) (let V2783 (shen.lazyderef (tl V2781) V2792) (if (cons? V2783) (let A (hd V2783) (let V2784 (shen.lazyderef (tl V2783) V2792) (if (= () V2784) (do (shen.incinfs) (fwhen (shen.type-theory-enabled?) V2792 (freeze (cut Throwcontrol V2792 (freeze (shen.th* X A V2791 V2792 V2793)))))) false))) false)) false)) false))) false)) (if (= Case false) (let Datatypes (shen.newpv V2792) (do (shen.incinfs) (shen.show V2790 V2791 V2792 (freeze (bind Datatypes (value shen.*datatypes*) V2792 (freeze (shen.udefs* V2790 V2791 Datatypes V2792 V2793))))))) Case)) Case)) Case)))))
59
59
 
60
60
  (defun shen.type-theory-enabled? () (value shen.*shen-type-theory-enabled?*))
61
61
 
62
- (defun enable-type-theory (V2766) (cond ((= + V2766) (set shen.*shen-type-theory-enabled?* true)) ((= - V2766) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
62
+ (defun enable-type-theory (V2798) (cond ((= + V2798) (set shen.*shen-type-theory-enabled?* true)) ((= - V2798) (set shen.*shen-type-theory-enabled?* false)) (true (simple-error "enable-type-theory expects a + or a -
63
63
  "))))
64
64
 
65
- (defun shen.prolog-failure (V2775 V2776) false)
65
+ (defun shen.prolog-failure (V2807 V2808) false)
66
66
 
67
67
  (defun shen.maxinfexceeded? () (> (inferences) (value shen.*maxinferences*)))
68
68
 
69
69
  (defun shen.errormaxinfs () (simple-error "maximum inferences exceeded~%"))
70
70
 
71
- (defun shen.udefs* (V2777 V2778 V2779 V2780 V2781) (let Case (let V2743 (shen.lazyderef V2779 V2780) (if (cons? V2743) (let D (hd V2743) (do (shen.incinfs) (call (cons D (cons V2777 (cons V2778 ()))) V2780 V2781))) false)) (if (= Case false) (let V2744 (shen.lazyderef V2779 V2780) (if (cons? V2744) (let Ds (tl V2744) (do (shen.incinfs) (shen.udefs* V2777 V2778 Ds V2780 V2781))) false)) Case)))
71
+ (defun shen.udefs* (V2809 V2810 V2811 V2812 V2813) (let Case (let V2775 (shen.lazyderef V2811 V2812) (if (cons? V2775) (let D (hd V2775) (do (shen.incinfs) (call (cons D (cons V2809 (cons V2810 ()))) V2812 V2813))) false)) (if (= Case false) (let V2776 (shen.lazyderef V2811 V2812) (if (cons? V2776) (let Ds (tl V2776) (do (shen.incinfs) (shen.udefs* V2809 V2810 Ds V2812 V2813))) false)) Case)))
72
72
 
73
- (defun shen.th* (V2782 V2783 V2784 V2785 V2786) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2782 (cons : (cons V2783 ()))) V2784 V2785 (freeze (fwhen false V2785 V2786)))) (if (= Case false) (let Case (let F (shen.newpv V2785) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2782 V2785)) V2785 (freeze (bind F (shen.sigf (shen.lazyderef V2782 V2785)) V2785 (freeze (call (cons F (cons V2783 ())) V2785 V2786))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2782 V2783 V2785 V2786)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2782 V2783 V2784 V2785 V2786)) (if (= Case false) (let Case (let V2623 (shen.lazyderef V2782 V2785) (if (cons? V2623) (let F (hd V2623) (let V2624 (shen.lazyderef (tl V2623) V2785) (if (= () V2624) (do (shen.incinfs) (shen.th* F (cons --> (cons V2783 ())) V2784 V2785 V2786)) false))) false)) (if (= Case false) (let Case (let V2625 (shen.lazyderef V2782 V2785) (if (cons? V2625) (let F (hd V2625) (let V2626 (shen.lazyderef (tl V2625) V2785) (if (cons? V2626) (let X (hd V2626) (let V2627 (shen.lazyderef (tl V2626) V2785) (if (= () V2627) (let B (shen.newpv V2785) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2783 ()))) V2784 V2785 (freeze (shen.th* X B V2784 V2785 V2786))))) false))) false))) false)) (if (= Case false) (let Case (let V2628 (shen.lazyderef V2782 V2785) (if (cons? V2628) (let V2629 (shen.lazyderef (hd V2628) V2785) (if (= cons V2629) (let V2630 (shen.lazyderef (tl V2628) V2785) (if (cons? V2630) (let X (hd V2630) (let V2631 (shen.lazyderef (tl V2630) V2785) (if (cons? V2631) (let Y (hd V2631) (let V2632 (shen.lazyderef (tl V2631) V2785) (if (= () V2632) (let V2633 (shen.lazyderef V2783 V2785) (if (cons? V2633) (let V2634 (shen.lazyderef (hd V2633) V2785) (if (= list V2634) (let V2635 (shen.lazyderef (tl V2633) V2785) (if (cons? V2635) (let A (hd V2635) (let V2636 (shen.lazyderef (tl V2635) V2785) (if (= () V2636) (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (if (shen.pvar? V2636) (do (shen.bindv V2636 () V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2636 V2785) Result))) false)))) (if (shen.pvar? V2635) (let A (shen.newpv V2785) (do (shen.bindv V2635 (cons A ()) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2635 V2785) Result)))) false))) (if (shen.pvar? V2634) (do (shen.bindv V2634 list V2785) (let Result (let V2637 (shen.lazyderef (tl V2633) V2785) (if (cons? V2637) (let A (hd V2637) (let V2638 (shen.lazyderef (tl V2637) V2785) (if (= () V2638) (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (if (shen.pvar? V2638) (do (shen.bindv V2638 () V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2638 V2785) Result))) false)))) (if (shen.pvar? V2637) (let A (shen.newpv V2785) (do (shen.bindv V2637 (cons A ()) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2637 V2785) Result)))) false))) (do (shen.unbindv V2634 V2785) Result))) false))) (if (shen.pvar? V2633) (let A (shen.newpv V2785) (do (shen.bindv V2633 (cons list (cons A ())) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons list (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2633 V2785) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2639 (shen.lazyderef V2782 V2785) (if (cons? V2639) (let V2640 (shen.lazyderef (hd V2639) V2785) (if (= @p V2640) (let V2641 (shen.lazyderef (tl V2639) V2785) (if (cons? V2641) (let X (hd V2641) (let V2642 (shen.lazyderef (tl V2641) V2785) (if (cons? V2642) (let Y (hd V2642) (let V2643 (shen.lazyderef (tl V2642) V2785) (if (= () V2643) (let V2644 (shen.lazyderef V2783 V2785) (if (cons? V2644) (let A (hd V2644) (let V2645 (shen.lazyderef (tl V2644) V2785) (if (cons? V2645) (let V2646 (shen.lazyderef (hd V2645) V2785) (if (= * V2646) (let V2647 (shen.lazyderef (tl V2645) V2785) (if (cons? V2647) (let B (hd V2647) (let V2648 (shen.lazyderef (tl V2647) V2785) (if (= () V2648) (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (if (shen.pvar? V2648) (do (shen.bindv V2648 () V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (do (shen.unbindv V2648 V2785) Result))) false)))) (if (shen.pvar? V2647) (let B (shen.newpv V2785) (do (shen.bindv V2647 (cons B ()) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (do (shen.unbindv V2647 V2785) Result)))) false))) (if (shen.pvar? V2646) (do (shen.bindv V2646 * V2785) (let Result (let V2649 (shen.lazyderef (tl V2645) V2785) (if (cons? V2649) (let B (hd V2649) (let V2650 (shen.lazyderef (tl V2649) V2785) (if (= () V2650) (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (if (shen.pvar? V2650) (do (shen.bindv V2650 () V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (do (shen.unbindv V2650 V2785) Result))) false)))) (if (shen.pvar? V2649) (let B (shen.newpv V2785) (do (shen.bindv V2649 (cons B ()) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (do (shen.unbindv V2649 V2785) Result)))) false))) (do (shen.unbindv V2646 V2785) Result))) false))) (if (shen.pvar? V2645) (let B (shen.newpv V2785) (do (shen.bindv V2645 (cons * (cons B ())) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (do (shen.unbindv V2645 V2785) Result)))) false)))) (if (shen.pvar? V2644) (let A (shen.newpv V2785) (let B (shen.newpv V2785) (do (shen.bindv V2644 (cons A (cons * (cons B ()))) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y B V2784 V2785 V2786)))) (do (shen.unbindv V2644 V2785) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2651 (shen.lazyderef V2782 V2785) (if (cons? V2651) (let V2652 (shen.lazyderef (hd V2651) V2785) (if (= @v V2652) (let V2653 (shen.lazyderef (tl V2651) V2785) (if (cons? V2653) (let X (hd V2653) (let V2654 (shen.lazyderef (tl V2653) V2785) (if (cons? V2654) (let Y (hd V2654) (let V2655 (shen.lazyderef (tl V2654) V2785) (if (= () V2655) (let V2656 (shen.lazyderef V2783 V2785) (if (cons? V2656) (let V2657 (shen.lazyderef (hd V2656) V2785) (if (= vector V2657) (let V2658 (shen.lazyderef (tl V2656) V2785) (if (cons? V2658) (let A (hd V2658) (let V2659 (shen.lazyderef (tl V2658) V2785) (if (= () V2659) (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (if (shen.pvar? V2659) (do (shen.bindv V2659 () V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2659 V2785) Result))) false)))) (if (shen.pvar? V2658) (let A (shen.newpv V2785) (do (shen.bindv V2658 (cons A ()) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2658 V2785) Result)))) false))) (if (shen.pvar? V2657) (do (shen.bindv V2657 vector V2785) (let Result (let V2660 (shen.lazyderef (tl V2656) V2785) (if (cons? V2660) (let A (hd V2660) (let V2661 (shen.lazyderef (tl V2660) V2785) (if (= () V2661) (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (if (shen.pvar? V2661) (do (shen.bindv V2661 () V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2661 V2785) Result))) false)))) (if (shen.pvar? V2660) (let A (shen.newpv V2785) (do (shen.bindv V2660 (cons A ()) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2660 V2785) Result)))) false))) (do (shen.unbindv V2657 V2785) Result))) false))) (if (shen.pvar? V2656) (let A (shen.newpv V2785) (do (shen.bindv V2656 (cons vector (cons A ())) V2785) (let Result (do (shen.incinfs) (shen.th* X A V2784 V2785 (freeze (shen.th* Y (cons vector (cons A ())) V2784 V2785 V2786)))) (do (shen.unbindv V2656 V2785) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2662 (shen.lazyderef V2782 V2785) (if (cons? V2662) (let V2663 (shen.lazyderef (hd V2662) V2785) (if (= @s V2663) (let V2664 (shen.lazyderef (tl V2662) V2785) (if (cons? V2664) (let X (hd V2664) (let V2665 (shen.lazyderef (tl V2664) V2785) (if (cons? V2665) (let Y (hd V2665) (let V2666 (shen.lazyderef (tl V2665) V2785) (if (= () V2666) (let V2667 (shen.lazyderef V2783 V2785) (if (= string V2667) (do (shen.incinfs) (shen.th* X string V2784 V2785 (freeze (shen.th* Y string V2784 V2785 V2786)))) (if (shen.pvar? V2667) (do (shen.bindv V2667 string V2785) (let Result (do (shen.incinfs) (shen.th* X string V2784 V2785 (freeze (shen.th* Y string V2784 V2785 V2786)))) (do (shen.unbindv V2667 V2785) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2668 (shen.lazyderef V2782 V2785) (if (cons? V2668) (let V2669 (shen.lazyderef (hd V2668) V2785) (if (= lambda V2669) (let V2670 (shen.lazyderef (tl V2668) V2785) (if (cons? V2670) (let X (hd V2670) (let V2671 (shen.lazyderef (tl V2670) V2785) (if (cons? V2671) (let Y (hd V2671) (let V2672 (shen.lazyderef (tl V2671) V2785) (if (= () V2672) (let V2673 (shen.lazyderef V2783 V2785) (if (cons? V2673) (let A (hd V2673) (let V2674 (shen.lazyderef (tl V2673) V2785) (if (cons? V2674) (let V2675 (shen.lazyderef (hd V2674) V2785) (if (= --> V2675) (let V2676 (shen.lazyderef (tl V2674) V2785) (if (cons? V2676) (let B (hd V2676) (let V2677 (shen.lazyderef (tl V2676) V2785) (if (= () V2677) (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (if (shen.pvar? V2677) (do (shen.bindv V2677 () V2785) (let Result (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (do (shen.unbindv V2677 V2785) Result))) false)))) (if (shen.pvar? V2676) (let B (shen.newpv V2785) (do (shen.bindv V2676 (cons B ()) V2785) (let Result (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (do (shen.unbindv V2676 V2785) Result)))) false))) (if (shen.pvar? V2675) (do (shen.bindv V2675 --> V2785) (let Result (let V2678 (shen.lazyderef (tl V2674) V2785) (if (cons? V2678) (let B (hd V2678) (let V2679 (shen.lazyderef (tl V2678) V2785) (if (= () V2679) (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (if (shen.pvar? V2679) (do (shen.bindv V2679 () V2785) (let Result (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (do (shen.unbindv V2679 V2785) Result))) false)))) (if (shen.pvar? V2678) (let B (shen.newpv V2785) (do (shen.bindv V2678 (cons B ()) V2785) (let Result (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (do (shen.unbindv V2678 V2785) Result)))) false))) (do (shen.unbindv V2675 V2785) Result))) false))) (if (shen.pvar? V2674) (let B (shen.newpv V2785) (do (shen.bindv V2674 (cons --> (cons B ())) V2785) (let Result (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (do (shen.unbindv V2674 V2785) Result)))) false)))) (if (shen.pvar? V2673) (let A (shen.newpv V2785) (let B (shen.newpv V2785) (do (shen.bindv V2673 (cons A (cons --> (cons B ()))) V2785) (let Result (let Z (shen.newpv V2785) (let X&& (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Y V2785)) V2785 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2784) V2785 V2786)))))))))) (do (shen.unbindv V2673 V2785) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2680 (shen.lazyderef V2782 V2785) (if (cons? V2680) (let V2681 (shen.lazyderef (hd V2680) V2785) (if (= let V2681) (let V2682 (shen.lazyderef (tl V2680) V2785) (if (cons? V2682) (let X (hd V2682) (let V2683 (shen.lazyderef (tl V2682) V2785) (if (cons? V2683) (let Y (hd V2683) (let V2684 (shen.lazyderef (tl V2683) V2785) (if (cons? V2684) (let Z (hd V2684) (let V2685 (shen.lazyderef (tl V2684) V2785) (if (= () V2685) (let W (shen.newpv V2785) (let X&& (shen.newpv V2785) (let B (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (shen.th* Y B V2784 V2785 (freeze (bind X&& (shen.placeholder) V2785 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2785) (shen.lazyderef X V2785) (shen.lazyderef Z V2785)) V2785 (freeze (shen.th* W V2783 (cons (cons X&& (cons : (cons B ()))) V2784) V2785 V2786))))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2686 (shen.lazyderef V2782 V2785) (if (cons? V2686) (let V2687 (shen.lazyderef (hd V2686) V2785) (if (= open V2687) (let V2688 (shen.lazyderef (tl V2686) V2785) (if (cons? V2688) (let V2689 (shen.lazyderef (hd V2688) V2785) (if (= file V2689) (let V2690 (shen.lazyderef (tl V2688) V2785) (if (cons? V2690) (let FileName (hd V2690) (let V2691 (shen.lazyderef (tl V2690) V2785) (if (cons? V2691) (let Direction2619 (hd V2691) (let V2692 (shen.lazyderef (tl V2691) V2785) (if (= () V2692) (let V2693 (shen.lazyderef V2783 V2785) (if (cons? V2693) (let V2694 (shen.lazyderef (hd V2693) V2785) (if (= stream V2694) (let V2695 (shen.lazyderef (tl V2693) V2785) (if (cons? V2695) (let Direction (hd V2695) (let V2696 (shen.lazyderef (tl V2695) V2785) (if (= () V2696) (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (if (shen.pvar? V2696) (do (shen.bindv V2696 () V2785) (let Result (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (do (shen.unbindv V2696 V2785) Result))) false)))) (if (shen.pvar? V2695) (let Direction (shen.newpv V2785) (do (shen.bindv V2695 (cons Direction ()) V2785) (let Result (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (do (shen.unbindv V2695 V2785) Result)))) false))) (if (shen.pvar? V2694) (do (shen.bindv V2694 stream V2785) (let Result (let V2697 (shen.lazyderef (tl V2693) V2785) (if (cons? V2697) (let Direction (hd V2697) (let V2698 (shen.lazyderef (tl V2697) V2785) (if (= () V2698) (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (if (shen.pvar? V2698) (do (shen.bindv V2698 () V2785) (let Result (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (do (shen.unbindv V2698 V2785) Result))) false)))) (if (shen.pvar? V2697) (let Direction (shen.newpv V2785) (do (shen.bindv V2697 (cons Direction ()) V2785) (let Result (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (do (shen.unbindv V2697 V2785) Result)))) false))) (do (shen.unbindv V2694 V2785) Result))) false))) (if (shen.pvar? V2693) (let Direction (shen.newpv V2785) (do (shen.bindv V2693 (cons stream (cons Direction ())) V2785) (let Result (do (shen.incinfs) (unify! Direction Direction2619 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* FileName string V2784 V2785 V2786)))))) (do (shen.unbindv V2693 V2785) Result)))) false))) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2699 (shen.lazyderef V2782 V2785) (if (cons? V2699) (let V2700 (shen.lazyderef (hd V2699) V2785) (if (= type V2700) (let V2701 (shen.lazyderef (tl V2699) V2785) (if (cons? V2701) (let X (hd V2701) (let V2702 (shen.lazyderef (tl V2701) V2785) (if (cons? V2702) (let A (hd V2702) (let V2703 (shen.lazyderef (tl V2702) V2785) (if (= () V2703) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (unify A V2783 V2785 (freeze (shen.th* X A V2784 V2785 V2786)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2704 (shen.lazyderef V2782 V2785) (if (cons? V2704) (let V2705 (shen.lazyderef (hd V2704) V2785) (if (= input+ V2705) (let V2706 (shen.lazyderef (tl V2704) V2785) (if (cons? V2706) (let V2707 (shen.lazyderef (hd V2706) V2785) (if (= : V2707) (let V2708 (shen.lazyderef (tl V2706) V2785) (if (cons? V2708) (let A (hd V2708) (let V2709 (shen.lazyderef (tl V2708) V2785) (if (= () V2709) (let C (shen.newpv V2785) (do (shen.incinfs) (bind C (shen.normalise-type (shen.lazyderef A V2785)) V2785 (freeze (unify V2783 C V2785 V2786))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2710 (shen.lazyderef V2782 V2785) (if (cons? V2710) (let V2711 (shen.lazyderef (hd V2710) V2785) (if (= where V2711) (let V2712 (shen.lazyderef (tl V2710) V2785) (if (cons? V2712) (let P (hd V2712) (let V2713 (shen.lazyderef (tl V2712) V2785) (if (cons? V2713) (let X (hd V2713) (let V2714 (shen.lazyderef (tl V2713) V2785) (if (= () V2714) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (shen.th* P boolean V2784 V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* X V2783 (cons (cons P (cons : (cons verified ()))) V2784) V2785 V2786)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2715 (shen.lazyderef V2782 V2785) (if (cons? V2715) (let V2716 (shen.lazyderef (hd V2715) V2785) (if (= set V2716) (let V2717 (shen.lazyderef (tl V2715) V2785) (if (cons? V2717) (let Var (hd V2717) (let V2718 (shen.lazyderef (tl V2717) V2785) (if (cons? V2718) (let Val (hd V2718) (let V2719 (shen.lazyderef (tl V2718) V2785) (if (= () V2719) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (shen.th* (cons value (cons Var ())) V2783 V2784 V2785 (freeze (shen.th* Val V2783 V2784 V2785 V2786)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2720 (shen.lazyderef V2782 V2785) (if (cons? V2720) (let V2721 (shen.lazyderef (hd V2720) V2785) (if (= shen.<-sem V2721) (let V2722 (shen.lazyderef (tl V2720) V2785) (if (cons? V2722) (let F (hd V2722) (let V2723 (shen.lazyderef (tl V2722) V2785) (if (= () V2723) (let A (shen.newpv V2785) (let F&& (shen.newpv V2785) (let B (shen.newpv V2785) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2784 V2785 (freeze (cut Throwcontrol V2785 (freeze (bind F&& (concat && (shen.lazyderef F V2785)) V2785 (freeze (cut Throwcontrol V2785 (freeze (shen.th* F&& V2783 (cons (cons F&& (cons : (cons B ()))) V2784) V2785 V2786))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2724 (shen.lazyderef V2782 V2785) (if (cons? V2724) (let V2725 (shen.lazyderef (hd V2724) V2785) (if (= fail V2725) (let V2726 (shen.lazyderef (tl V2724) V2785) (if (= () V2726) (let V2727 (shen.lazyderef V2783 V2785) (if (= symbol V2727) (do (shen.incinfs) (thaw V2786)) (if (shen.pvar? V2727) (do (shen.bindv V2727 symbol V2785) (let Result (do (shen.incinfs) (thaw V2786)) (do (shen.unbindv V2727 V2785) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2785) (do (shen.incinfs) (shen.t*-hyps V2784 NewHyp V2785 (freeze (shen.th* V2782 V2783 NewHyp V2785 V2786))))) (if (= Case false) (let Case (let V2728 (shen.lazyderef V2782 V2785) (if (cons? V2728) (let V2729 (shen.lazyderef (hd V2728) V2785) (if (= define V2729) (let V2730 (shen.lazyderef (tl V2728) V2785) (if (cons? V2730) (let F (hd V2730) (let X (tl V2730) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (shen.t*-def (cons define (cons F X)) V2783 V2784 V2785 V2786)))))) false)) false)) false)) (if (= Case false) (let Case (let V2731 (shen.lazyderef V2782 V2785) (if (cons? V2731) (let V2732 (shen.lazyderef (hd V2731) V2785) (if (= defcc V2732) (let V2733 (shen.lazyderef (tl V2731) V2785) (if (cons? V2733) (let F (hd V2733) (let X (tl V2733) (do (shen.incinfs) (cut Throwcontrol V2785 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2783 V2784 V2785 V2786)))))) false)) false)) false)) (if (= Case false) (let Case (let V2734 (shen.lazyderef V2782 V2785) (if (cons? V2734) (let V2735 (shen.lazyderef (hd V2734) V2785) (if (= shen.process-datatype V2735) (let V2736 (shen.lazyderef V2783 V2785) (if (= symbol V2736) (do (shen.incinfs) (thaw V2786)) (if (shen.pvar? V2736) (do (shen.bindv V2736 symbol V2785) (let Result (do (shen.incinfs) (thaw V2786)) (do (shen.unbindv V2736 V2785) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2737 (shen.lazyderef V2782 V2785) (if (cons? V2737) (let V2738 (shen.lazyderef (hd V2737) V2785) (if (= shen.synonyms-help V2738) (let V2739 (shen.lazyderef V2783 V2785) (if (= symbol V2739) (do (shen.incinfs) (thaw V2786)) (if (shen.pvar? V2739) (do (shen.bindv V2739 symbol V2785) (let Result (do (shen.incinfs) (thaw V2786)) (do (shen.unbindv V2739 V2785) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2785) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2785 (freeze (shen.udefs* (cons V2782 (cons : (cons V2783 ()))) V2784 Datatypes V2785 V2786))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
73
+ (defun shen.th* (V2814 V2815 V2816 V2817 V2818) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (do (shen.incinfs) (shen.show (cons V2814 (cons : (cons V2815 ()))) V2816 V2817 (freeze (fwhen false V2817 V2818)))) (if (= Case false) (let Case (let F (shen.newpv V2817) (do (shen.incinfs) (fwhen (shen.typedf? (shen.lazyderef V2814 V2817)) V2817 (freeze (bind F (shen.sigf (shen.lazyderef V2814 V2817)) V2817 (freeze (call (cons F (cons V2815 ())) V2817 V2818))))))) (if (= Case false) (let Case (do (shen.incinfs) (shen.base V2814 V2815 V2817 V2818)) (if (= Case false) (let Case (do (shen.incinfs) (shen.by_hypothesis V2814 V2815 V2816 V2817 V2818)) (if (= Case false) (let Case (let V2655 (shen.lazyderef V2814 V2817) (if (cons? V2655) (let F (hd V2655) (let V2656 (shen.lazyderef (tl V2655) V2817) (if (= () V2656) (do (shen.incinfs) (shen.th* F (cons --> (cons V2815 ())) V2816 V2817 V2818)) false))) false)) (if (= Case false) (let Case (let V2657 (shen.lazyderef V2814 V2817) (if (cons? V2657) (let F (hd V2657) (let V2658 (shen.lazyderef (tl V2657) V2817) (if (cons? V2658) (let X (hd V2658) (let V2659 (shen.lazyderef (tl V2658) V2817) (if (= () V2659) (let B (shen.newpv V2817) (do (shen.incinfs) (shen.th* F (cons B (cons --> (cons V2815 ()))) V2816 V2817 (freeze (shen.th* X B V2816 V2817 V2818))))) false))) false))) false)) (if (= Case false) (let Case (let V2660 (shen.lazyderef V2814 V2817) (if (cons? V2660) (let V2661 (shen.lazyderef (hd V2660) V2817) (if (= cons V2661) (let V2662 (shen.lazyderef (tl V2660) V2817) (if (cons? V2662) (let X (hd V2662) (let V2663 (shen.lazyderef (tl V2662) V2817) (if (cons? V2663) (let Y (hd V2663) (let V2664 (shen.lazyderef (tl V2663) V2817) (if (= () V2664) (let V2665 (shen.lazyderef V2815 V2817) (if (cons? V2665) (let V2666 (shen.lazyderef (hd V2665) V2817) (if (= list V2666) (let V2667 (shen.lazyderef (tl V2665) V2817) (if (cons? V2667) (let A (hd V2667) (let V2668 (shen.lazyderef (tl V2667) V2817) (if (= () V2668) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2668) (do (shen.bindv V2668 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2668 V2817) Result))) false)))) (if (shen.pvar? V2667) (let A (shen.newpv V2817) (do (shen.bindv V2667 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2667 V2817) Result)))) false))) (if (shen.pvar? V2666) (do (shen.bindv V2666 list V2817) (let Result (let V2669 (shen.lazyderef (tl V2665) V2817) (if (cons? V2669) (let A (hd V2669) (let V2670 (shen.lazyderef (tl V2669) V2817) (if (= () V2670) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2670) (do (shen.bindv V2670 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2670 V2817) Result))) false)))) (if (shen.pvar? V2669) (let A (shen.newpv V2817) (do (shen.bindv V2669 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2669 V2817) Result)))) false))) (do (shen.unbindv V2666 V2817) Result))) false))) (if (shen.pvar? V2665) (let A (shen.newpv V2817) (do (shen.bindv V2665 (cons list (cons A ())) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons list (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2665 V2817) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2671 (shen.lazyderef V2814 V2817) (if (cons? V2671) (let V2672 (shen.lazyderef (hd V2671) V2817) (if (= @p V2672) (let V2673 (shen.lazyderef (tl V2671) V2817) (if (cons? V2673) (let X (hd V2673) (let V2674 (shen.lazyderef (tl V2673) V2817) (if (cons? V2674) (let Y (hd V2674) (let V2675 (shen.lazyderef (tl V2674) V2817) (if (= () V2675) (let V2676 (shen.lazyderef V2815 V2817) (if (cons? V2676) (let A (hd V2676) (let V2677 (shen.lazyderef (tl V2676) V2817) (if (cons? V2677) (let V2678 (shen.lazyderef (hd V2677) V2817) (if (= * V2678) (let V2679 (shen.lazyderef (tl V2677) V2817) (if (cons? V2679) (let B (hd V2679) (let V2680 (shen.lazyderef (tl V2679) V2817) (if (= () V2680) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (if (shen.pvar? V2680) (do (shen.bindv V2680 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2680 V2817) Result))) false)))) (if (shen.pvar? V2679) (let B (shen.newpv V2817) (do (shen.bindv V2679 (cons B ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2679 V2817) Result)))) false))) (if (shen.pvar? V2678) (do (shen.bindv V2678 * V2817) (let Result (let V2681 (shen.lazyderef (tl V2677) V2817) (if (cons? V2681) (let B (hd V2681) (let V2682 (shen.lazyderef (tl V2681) V2817) (if (= () V2682) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (if (shen.pvar? V2682) (do (shen.bindv V2682 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2682 V2817) Result))) false)))) (if (shen.pvar? V2681) (let B (shen.newpv V2817) (do (shen.bindv V2681 (cons B ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2681 V2817) Result)))) false))) (do (shen.unbindv V2678 V2817) Result))) false))) (if (shen.pvar? V2677) (let B (shen.newpv V2817) (do (shen.bindv V2677 (cons * (cons B ())) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2677 V2817) Result)))) false)))) (if (shen.pvar? V2676) (let A (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.bindv V2676 (cons A (cons * (cons B ()))) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y B V2816 V2817 V2818)))) (do (shen.unbindv V2676 V2817) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2683 (shen.lazyderef V2814 V2817) (if (cons? V2683) (let V2684 (shen.lazyderef (hd V2683) V2817) (if (= @v V2684) (let V2685 (shen.lazyderef (tl V2683) V2817) (if (cons? V2685) (let X (hd V2685) (let V2686 (shen.lazyderef (tl V2685) V2817) (if (cons? V2686) (let Y (hd V2686) (let V2687 (shen.lazyderef (tl V2686) V2817) (if (= () V2687) (let V2688 (shen.lazyderef V2815 V2817) (if (cons? V2688) (let V2689 (shen.lazyderef (hd V2688) V2817) (if (= vector V2689) (let V2690 (shen.lazyderef (tl V2688) V2817) (if (cons? V2690) (let A (hd V2690) (let V2691 (shen.lazyderef (tl V2690) V2817) (if (= () V2691) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2691) (do (shen.bindv V2691 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2691 V2817) Result))) false)))) (if (shen.pvar? V2690) (let A (shen.newpv V2817) (do (shen.bindv V2690 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2690 V2817) Result)))) false))) (if (shen.pvar? V2689) (do (shen.bindv V2689 vector V2817) (let Result (let V2692 (shen.lazyderef (tl V2688) V2817) (if (cons? V2692) (let A (hd V2692) (let V2693 (shen.lazyderef (tl V2692) V2817) (if (= () V2693) (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (if (shen.pvar? V2693) (do (shen.bindv V2693 () V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2693 V2817) Result))) false)))) (if (shen.pvar? V2692) (let A (shen.newpv V2817) (do (shen.bindv V2692 (cons A ()) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2692 V2817) Result)))) false))) (do (shen.unbindv V2689 V2817) Result))) false))) (if (shen.pvar? V2688) (let A (shen.newpv V2817) (do (shen.bindv V2688 (cons vector (cons A ())) V2817) (let Result (do (shen.incinfs) (shen.th* X A V2816 V2817 (freeze (shen.th* Y (cons vector (cons A ())) V2816 V2817 V2818)))) (do (shen.unbindv V2688 V2817) Result)))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2694 (shen.lazyderef V2814 V2817) (if (cons? V2694) (let V2695 (shen.lazyderef (hd V2694) V2817) (if (= @s V2695) (let V2696 (shen.lazyderef (tl V2694) V2817) (if (cons? V2696) (let X (hd V2696) (let V2697 (shen.lazyderef (tl V2696) V2817) (if (cons? V2697) (let Y (hd V2697) (let V2698 (shen.lazyderef (tl V2697) V2817) (if (= () V2698) (let V2699 (shen.lazyderef V2815 V2817) (if (= string V2699) (do (shen.incinfs) (shen.th* X string V2816 V2817 (freeze (shen.th* Y string V2816 V2817 V2818)))) (if (shen.pvar? V2699) (do (shen.bindv V2699 string V2817) (let Result (do (shen.incinfs) (shen.th* X string V2816 V2817 (freeze (shen.th* Y string V2816 V2817 V2818)))) (do (shen.unbindv V2699 V2817) Result))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2700 (shen.lazyderef V2814 V2817) (if (cons? V2700) (let V2701 (shen.lazyderef (hd V2700) V2817) (if (= lambda V2701) (let V2702 (shen.lazyderef (tl V2700) V2817) (if (cons? V2702) (let X (hd V2702) (let V2703 (shen.lazyderef (tl V2702) V2817) (if (cons? V2703) (let Y (hd V2703) (let V2704 (shen.lazyderef (tl V2703) V2817) (if (= () V2704) (let V2705 (shen.lazyderef V2815 V2817) (if (cons? V2705) (let A (hd V2705) (let V2706 (shen.lazyderef (tl V2705) V2817) (if (cons? V2706) (let V2707 (shen.lazyderef (hd V2706) V2817) (if (= --> V2707) (let V2708 (shen.lazyderef (tl V2706) V2817) (if (cons? V2708) (let B (hd V2708) (let V2709 (shen.lazyderef (tl V2708) V2817) (if (= () V2709) (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (if (shen.pvar? V2709) (do (shen.bindv V2709 () V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2709 V2817) Result))) false)))) (if (shen.pvar? V2708) (let B (shen.newpv V2817) (do (shen.bindv V2708 (cons B ()) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2708 V2817) Result)))) false))) (if (shen.pvar? V2707) (do (shen.bindv V2707 --> V2817) (let Result (let V2710 (shen.lazyderef (tl V2706) V2817) (if (cons? V2710) (let B (hd V2710) (let V2711 (shen.lazyderef (tl V2710) V2817) (if (= () V2711) (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (if (shen.pvar? V2711) (do (shen.bindv V2711 () V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2711 V2817) Result))) false)))) (if (shen.pvar? V2710) (let B (shen.newpv V2817) (do (shen.bindv V2710 (cons B ()) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2710 V2817) Result)))) false))) (do (shen.unbindv V2707 V2817) Result))) false))) (if (shen.pvar? V2706) (let B (shen.newpv V2817) (do (shen.bindv V2706 (cons --> (cons B ())) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2706 V2817) Result)))) false)))) (if (shen.pvar? V2705) (let A (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.bindv V2705 (cons A (cons --> (cons B ()))) V2817) (let Result (let Z (shen.newpv V2817) (let X&& (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind Z (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Y V2817)) V2817 (freeze (shen.th* Z B (cons (cons X&& (cons : (cons A ()))) V2816) V2817 V2818)))))))))) (do (shen.unbindv V2705 V2817) Result))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2712 (shen.lazyderef V2814 V2817) (if (cons? V2712) (let V2713 (shen.lazyderef (hd V2712) V2817) (if (= let V2713) (let V2714 (shen.lazyderef (tl V2712) V2817) (if (cons? V2714) (let X (hd V2714) (let V2715 (shen.lazyderef (tl V2714) V2817) (if (cons? V2715) (let Y (hd V2715) (let V2716 (shen.lazyderef (tl V2715) V2817) (if (cons? V2716) (let Z (hd V2716) (let V2717 (shen.lazyderef (tl V2716) V2817) (if (= () V2717) (let W (shen.newpv V2817) (let X&& (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* Y B V2816 V2817 (freeze (bind X&& (shen.placeholder) V2817 (freeze (bind W (shen.ebr (shen.lazyderef X&& V2817) (shen.lazyderef X V2817) (shen.lazyderef Z V2817)) V2817 (freeze (shen.th* W V2815 (cons (cons X&& (cons : (cons B ()))) V2816) V2817 V2818))))))))))))) false))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2718 (shen.lazyderef V2814 V2817) (if (cons? V2718) (let V2719 (shen.lazyderef (hd V2718) V2817) (if (= open V2719) (let V2720 (shen.lazyderef (tl V2718) V2817) (if (cons? V2720) (let V2721 (shen.lazyderef (hd V2720) V2817) (if (= file V2721) (let V2722 (shen.lazyderef (tl V2720) V2817) (if (cons? V2722) (let FileName (hd V2722) (let V2723 (shen.lazyderef (tl V2722) V2817) (if (cons? V2723) (let Direction2651 (hd V2723) (let V2724 (shen.lazyderef (tl V2723) V2817) (if (= () V2724) (let V2725 (shen.lazyderef V2815 V2817) (if (cons? V2725) (let V2726 (shen.lazyderef (hd V2725) V2817) (if (= stream V2726) (let V2727 (shen.lazyderef (tl V2725) V2817) (if (cons? V2727) (let Direction (hd V2727) (let V2728 (shen.lazyderef (tl V2727) V2817) (if (= () V2728) (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (if (shen.pvar? V2728) (do (shen.bindv V2728 () V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2728 V2817) Result))) false)))) (if (shen.pvar? V2727) (let Direction (shen.newpv V2817) (do (shen.bindv V2727 (cons Direction ()) V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2727 V2817) Result)))) false))) (if (shen.pvar? V2726) (do (shen.bindv V2726 stream V2817) (let Result (let V2729 (shen.lazyderef (tl V2725) V2817) (if (cons? V2729) (let Direction (hd V2729) (let V2730 (shen.lazyderef (tl V2729) V2817) (if (= () V2730) (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (if (shen.pvar? V2730) (do (shen.bindv V2730 () V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2730 V2817) Result))) false)))) (if (shen.pvar? V2729) (let Direction (shen.newpv V2817) (do (shen.bindv V2729 (cons Direction ()) V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2729 V2817) Result)))) false))) (do (shen.unbindv V2726 V2817) Result))) false))) (if (shen.pvar? V2725) (let Direction (shen.newpv V2817) (do (shen.bindv V2725 (cons stream (cons Direction ())) V2817) (let Result (do (shen.incinfs) (unify! Direction Direction2651 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* FileName string V2816 V2817 V2818)))))) (do (shen.unbindv V2725 V2817) Result)))) false))) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2731 (shen.lazyderef V2814 V2817) (if (cons? V2731) (let V2732 (shen.lazyderef (hd V2731) V2817) (if (= type V2732) (let V2733 (shen.lazyderef (tl V2731) V2817) (if (cons? V2733) (let X (hd V2733) (let V2734 (shen.lazyderef (tl V2733) V2817) (if (cons? V2734) (let A (hd V2734) (let V2735 (shen.lazyderef (tl V2734) V2817) (if (= () V2735) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (unify A V2815 V2817 (freeze (shen.th* X A V2816 V2817 V2818)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2736 (shen.lazyderef V2814 V2817) (if (cons? V2736) (let V2737 (shen.lazyderef (hd V2736) V2817) (if (= input+ V2737) (let V2738 (shen.lazyderef (tl V2736) V2817) (if (cons? V2738) (let V2739 (shen.lazyderef (hd V2738) V2817) (if (= : V2739) (let V2740 (shen.lazyderef (tl V2738) V2817) (if (cons? V2740) (let A (hd V2740) (let V2741 (shen.lazyderef (tl V2740) V2817) (if (= () V2741) (let C (shen.newpv V2817) (do (shen.incinfs) (bind C (shen.demodulate (shen.lazyderef A V2817)) V2817 (freeze (unify V2815 C V2817 V2818))))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2742 (shen.lazyderef V2814 V2817) (if (cons? V2742) (let V2743 (shen.lazyderef (hd V2742) V2817) (if (= where V2743) (let V2744 (shen.lazyderef (tl V2742) V2817) (if (cons? V2744) (let P (hd V2744) (let V2745 (shen.lazyderef (tl V2744) V2817) (if (cons? V2745) (let X (hd V2745) (let V2746 (shen.lazyderef (tl V2745) V2817) (if (= () V2746) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* P boolean V2816 V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* X V2815 (cons (cons P (cons : (cons verified ()))) V2816) V2817 V2818)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2747 (shen.lazyderef V2814 V2817) (if (cons? V2747) (let V2748 (shen.lazyderef (hd V2747) V2817) (if (= set V2748) (let V2749 (shen.lazyderef (tl V2747) V2817) (if (cons? V2749) (let Var (hd V2749) (let V2750 (shen.lazyderef (tl V2749) V2817) (if (cons? V2750) (let Val (hd V2750) (let V2751 (shen.lazyderef (tl V2750) V2817) (if (= () V2751) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* (cons value (cons Var ())) V2815 V2816 V2817 (freeze (shen.th* Val V2815 V2816 V2817 V2818)))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2752 (shen.lazyderef V2814 V2817) (if (cons? V2752) (let V2753 (shen.lazyderef (hd V2752) V2817) (if (= shen.<-sem V2753) (let V2754 (shen.lazyderef (tl V2752) V2817) (if (cons? V2754) (let F (hd V2754) (let V2755 (shen.lazyderef (tl V2754) V2817) (if (= () V2755) (let A (shen.newpv V2817) (let F&& (shen.newpv V2817) (let B (shen.newpv V2817) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.th* F (cons A (cons ==> (cons B ()))) V2816 V2817 (freeze (cut Throwcontrol V2817 (freeze (bind F&& (concat && (shen.lazyderef F V2817)) V2817 (freeze (cut Throwcontrol V2817 (freeze (shen.th* F&& V2815 (cons (cons F&& (cons : (cons B ()))) V2816) V2817 V2818))))))))))))))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2756 (shen.lazyderef V2814 V2817) (if (cons? V2756) (let V2757 (shen.lazyderef (hd V2756) V2817) (if (= fail V2757) (let V2758 (shen.lazyderef (tl V2756) V2817) (if (= () V2758) (let V2759 (shen.lazyderef V2815 V2817) (if (= symbol V2759) (do (shen.incinfs) (thaw V2818)) (if (shen.pvar? V2759) (do (shen.bindv V2759 symbol V2817) (let Result (do (shen.incinfs) (thaw V2818)) (do (shen.unbindv V2759 V2817) Result))) false))) false)) false)) false)) (if (= Case false) (let Case (let NewHyp (shen.newpv V2817) (do (shen.incinfs) (shen.t*-hyps V2816 NewHyp V2817 (freeze (shen.th* V2814 V2815 NewHyp V2817 V2818))))) (if (= Case false) (let Case (let V2760 (shen.lazyderef V2814 V2817) (if (cons? V2760) (let V2761 (shen.lazyderef (hd V2760) V2817) (if (= define V2761) (let V2762 (shen.lazyderef (tl V2760) V2817) (if (cons? V2762) (let F (hd V2762) (let X (tl V2762) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.t*-def (cons define (cons F X)) V2815 V2816 V2817 V2818)))))) false)) false)) false)) (if (= Case false) (let Case (let V2763 (shen.lazyderef V2814 V2817) (if (cons? V2763) (let V2764 (shen.lazyderef (hd V2763) V2817) (if (= defcc V2764) (let V2765 (shen.lazyderef (tl V2763) V2817) (if (cons? V2765) (let F (hd V2765) (let X (tl V2765) (do (shen.incinfs) (cut Throwcontrol V2817 (freeze (shen.t*-defcc (cons defcc (cons F X)) V2815 V2816 V2817 V2818)))))) false)) false)) false)) (if (= Case false) (let Case (let V2766 (shen.lazyderef V2814 V2817) (if (cons? V2766) (let V2767 (shen.lazyderef (hd V2766) V2817) (if (= shen.process-datatype V2767) (let V2768 (shen.lazyderef V2815 V2817) (if (= symbol V2768) (do (shen.incinfs) (thaw V2818)) (if (shen.pvar? V2768) (do (shen.bindv V2768 symbol V2817) (let Result (do (shen.incinfs) (thaw V2818)) (do (shen.unbindv V2768 V2817) Result))) false))) false)) false)) (if (= Case false) (let Case (let V2769 (shen.lazyderef V2814 V2817) (if (cons? V2769) (let V2770 (shen.lazyderef (hd V2769) V2817) (if (= shen.synonyms-help V2770) (let V2771 (shen.lazyderef V2815 V2817) (if (= symbol V2771) (do (shen.incinfs) (thaw V2818)) (if (shen.pvar? V2771) (do (shen.bindv V2771 symbol V2817) (let Result (do (shen.incinfs) (thaw V2818)) (do (shen.unbindv V2771 V2817) Result))) false))) false)) false)) (if (= Case false) (let Datatypes (shen.newpv V2817) (do (shen.incinfs) (bind Datatypes (value shen.*datatypes*) V2817 (freeze (shen.udefs* (cons V2814 (cons : (cons V2815 ()))) V2816 Datatypes V2817 V2818))))) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)) Case)))))
74
74
 
75
- (defun shen.t*-hyps (V2787 V2788 V2789 V2790) (let Case (let V2534 (shen.lazyderef V2787 V2789) (if (cons? V2534) (let V2535 (shen.lazyderef (hd V2534) V2789) (if (cons? V2535) (let V2536 (shen.lazyderef (hd V2535) V2789) (if (cons? V2536) (let V2537 (shen.lazyderef (hd V2536) V2789) (if (= cons V2537) (let V2538 (shen.lazyderef (tl V2536) V2789) (if (cons? V2538) (let X (hd V2538) (let V2539 (shen.lazyderef (tl V2538) V2789) (if (cons? V2539) (let Y (hd V2539) (let V2540 (shen.lazyderef (tl V2539) V2789) (if (= () V2540) (let V2541 (shen.lazyderef (tl V2535) V2789) (if (cons? V2541) (let V2542 (shen.lazyderef (hd V2541) V2789) (if (= : V2542) (let V2543 (shen.lazyderef (tl V2541) V2789) (if (cons? V2543) (let V2544 (shen.lazyderef (hd V2543) V2789) (if (cons? V2544) (let V2545 (shen.lazyderef (hd V2544) V2789) (if (= list V2545) (let V2546 (shen.lazyderef (tl V2544) V2789) (if (cons? V2546) (let A (hd V2546) (let V2547 (shen.lazyderef (tl V2546) V2789) (if (= () V2547) (let V2548 (shen.lazyderef (tl V2543) V2789) (if (= () V2548) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2548) (do (shen.bindv V2548 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2548 V2789) Result))) false))) (if (shen.pvar? V2547) (do (shen.bindv V2547 () V2789) (let Result (let V2549 (shen.lazyderef (tl V2543) V2789) (if (= () V2549) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2549) (do (shen.bindv V2549 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2549 V2789) Result))) false))) (do (shen.unbindv V2547 V2789) Result))) false)))) (if (shen.pvar? V2546) (let A (shen.newpv V2789) (do (shen.bindv V2546 (cons A ()) V2789) (let Result (let V2550 (shen.lazyderef (tl V2543) V2789) (if (= () V2550) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2550) (do (shen.bindv V2550 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2550 V2789) Result))) false))) (do (shen.unbindv V2546 V2789) Result)))) false))) (if (shen.pvar? V2545) (do (shen.bindv V2545 list V2789) (let Result (let V2551 (shen.lazyderef (tl V2544) V2789) (if (cons? V2551) (let A (hd V2551) (let V2552 (shen.lazyderef (tl V2551) V2789) (if (= () V2552) (let V2553 (shen.lazyderef (tl V2543) V2789) (if (= () V2553) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2553) (do (shen.bindv V2553 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2553 V2789) Result))) false))) (if (shen.pvar? V2552) (do (shen.bindv V2552 () V2789) (let Result (let V2554 (shen.lazyderef (tl V2543) V2789) (if (= () V2554) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2554) (do (shen.bindv V2554 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2554 V2789) Result))) false))) (do (shen.unbindv V2552 V2789) Result))) false)))) (if (shen.pvar? V2551) (let A (shen.newpv V2789) (do (shen.bindv V2551 (cons A ()) V2789) (let Result (let V2555 (shen.lazyderef (tl V2543) V2789) (if (= () V2555) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2555) (do (shen.bindv V2555 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2555 V2789) Result))) false))) (do (shen.unbindv V2551 V2789) Result)))) false))) (do (shen.unbindv V2545 V2789) Result))) false))) (if (shen.pvar? V2544) (let A (shen.newpv V2789) (do (shen.bindv V2544 (cons list (cons A ())) V2789) (let Result (let V2556 (shen.lazyderef (tl V2543) V2789) (if (= () V2556) (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2556) (do (shen.bindv V2556 () V2789) (let Result (let Hyp (tl V2534) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons list (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2556 V2789) Result))) false))) (do (shen.unbindv V2544 V2789) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2557 (shen.lazyderef V2787 V2789) (if (cons? V2557) (let V2558 (shen.lazyderef (hd V2557) V2789) (if (cons? V2558) (let V2559 (shen.lazyderef (hd V2558) V2789) (if (cons? V2559) (let V2560 (shen.lazyderef (hd V2559) V2789) (if (= @p V2560) (let V2561 (shen.lazyderef (tl V2559) V2789) (if (cons? V2561) (let X (hd V2561) (let V2562 (shen.lazyderef (tl V2561) V2789) (if (cons? V2562) (let Y (hd V2562) (let V2563 (shen.lazyderef (tl V2562) V2789) (if (= () V2563) (let V2564 (shen.lazyderef (tl V2558) V2789) (if (cons? V2564) (let V2565 (shen.lazyderef (hd V2564) V2789) (if (= : V2565) (let V2566 (shen.lazyderef (tl V2564) V2789) (if (cons? V2566) (let V2567 (shen.lazyderef (hd V2566) V2789) (if (cons? V2567) (let A (hd V2567) (let V2568 (shen.lazyderef (tl V2567) V2789) (if (cons? V2568) (let V2569 (shen.lazyderef (hd V2568) V2789) (if (= * V2569) (let V2570 (shen.lazyderef (tl V2568) V2789) (if (cons? V2570) (let B (hd V2570) (let V2571 (shen.lazyderef (tl V2570) V2789) (if (= () V2571) (let V2572 (shen.lazyderef (tl V2566) V2789) (if (= () V2572) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2572) (do (shen.bindv V2572 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2572 V2789) Result))) false))) (if (shen.pvar? V2571) (do (shen.bindv V2571 () V2789) (let Result (let V2573 (shen.lazyderef (tl V2566) V2789) (if (= () V2573) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2573) (do (shen.bindv V2573 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2573 V2789) Result))) false))) (do (shen.unbindv V2571 V2789) Result))) false)))) (if (shen.pvar? V2570) (let B (shen.newpv V2789) (do (shen.bindv V2570 (cons B ()) V2789) (let Result (let V2574 (shen.lazyderef (tl V2566) V2789) (if (= () V2574) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2574) (do (shen.bindv V2574 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2574 V2789) Result))) false))) (do (shen.unbindv V2570 V2789) Result)))) false))) (if (shen.pvar? V2569) (do (shen.bindv V2569 * V2789) (let Result (let V2575 (shen.lazyderef (tl V2568) V2789) (if (cons? V2575) (let B (hd V2575) (let V2576 (shen.lazyderef (tl V2575) V2789) (if (= () V2576) (let V2577 (shen.lazyderef (tl V2566) V2789) (if (= () V2577) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2577) (do (shen.bindv V2577 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2577 V2789) Result))) false))) (if (shen.pvar? V2576) (do (shen.bindv V2576 () V2789) (let Result (let V2578 (shen.lazyderef (tl V2566) V2789) (if (= () V2578) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2578) (do (shen.bindv V2578 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2578 V2789) Result))) false))) (do (shen.unbindv V2576 V2789) Result))) false)))) (if (shen.pvar? V2575) (let B (shen.newpv V2789) (do (shen.bindv V2575 (cons B ()) V2789) (let Result (let V2579 (shen.lazyderef (tl V2566) V2789) (if (= () V2579) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2579) (do (shen.bindv V2579 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2579 V2789) Result))) false))) (do (shen.unbindv V2575 V2789) Result)))) false))) (do (shen.unbindv V2569 V2789) Result))) false))) (if (shen.pvar? V2568) (let B (shen.newpv V2789) (do (shen.bindv V2568 (cons * (cons B ())) V2789) (let Result (let V2580 (shen.lazyderef (tl V2566) V2789) (if (= () V2580) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2580) (do (shen.bindv V2580 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2580 V2789) Result))) false))) (do (shen.unbindv V2568 V2789) Result)))) false)))) (if (shen.pvar? V2567) (let A (shen.newpv V2789) (let B (shen.newpv V2789) (do (shen.bindv V2567 (cons A (cons * (cons B ()))) V2789) (let Result (let V2581 (shen.lazyderef (tl V2566) V2789) (if (= () V2581) (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2581) (do (shen.bindv V2581 () V2789) (let Result (let Hyp (tl V2557) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (shen.lazyderef B V2789) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2581 V2789) Result))) false))) (do (shen.unbindv V2567 V2789) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2582 (shen.lazyderef V2787 V2789) (if (cons? V2582) (let V2583 (shen.lazyderef (hd V2582) V2789) (if (cons? V2583) (let V2584 (shen.lazyderef (hd V2583) V2789) (if (cons? V2584) (let V2585 (shen.lazyderef (hd V2584) V2789) (if (= @v V2585) (let V2586 (shen.lazyderef (tl V2584) V2789) (if (cons? V2586) (let X (hd V2586) (let V2587 (shen.lazyderef (tl V2586) V2789) (if (cons? V2587) (let Y (hd V2587) (let V2588 (shen.lazyderef (tl V2587) V2789) (if (= () V2588) (let V2589 (shen.lazyderef (tl V2583) V2789) (if (cons? V2589) (let V2590 (shen.lazyderef (hd V2589) V2789) (if (= : V2590) (let V2591 (shen.lazyderef (tl V2589) V2789) (if (cons? V2591) (let V2592 (shen.lazyderef (hd V2591) V2789) (if (cons? V2592) (let V2593 (shen.lazyderef (hd V2592) V2789) (if (= vector V2593) (let V2594 (shen.lazyderef (tl V2592) V2789) (if (cons? V2594) (let A (hd V2594) (let V2595 (shen.lazyderef (tl V2594) V2789) (if (= () V2595) (let V2596 (shen.lazyderef (tl V2591) V2789) (if (= () V2596) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2596) (do (shen.bindv V2596 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2596 V2789) Result))) false))) (if (shen.pvar? V2595) (do (shen.bindv V2595 () V2789) (let Result (let V2597 (shen.lazyderef (tl V2591) V2789) (if (= () V2597) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2597) (do (shen.bindv V2597 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2597 V2789) Result))) false))) (do (shen.unbindv V2595 V2789) Result))) false)))) (if (shen.pvar? V2594) (let A (shen.newpv V2789) (do (shen.bindv V2594 (cons A ()) V2789) (let Result (let V2598 (shen.lazyderef (tl V2591) V2789) (if (= () V2598) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2598) (do (shen.bindv V2598 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2598 V2789) Result))) false))) (do (shen.unbindv V2594 V2789) Result)))) false))) (if (shen.pvar? V2593) (do (shen.bindv V2593 vector V2789) (let Result (let V2599 (shen.lazyderef (tl V2592) V2789) (if (cons? V2599) (let A (hd V2599) (let V2600 (shen.lazyderef (tl V2599) V2789) (if (= () V2600) (let V2601 (shen.lazyderef (tl V2591) V2789) (if (= () V2601) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2601) (do (shen.bindv V2601 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2601 V2789) Result))) false))) (if (shen.pvar? V2600) (do (shen.bindv V2600 () V2789) (let Result (let V2602 (shen.lazyderef (tl V2591) V2789) (if (= () V2602) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2602) (do (shen.bindv V2602 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2602 V2789) Result))) false))) (do (shen.unbindv V2600 V2789) Result))) false)))) (if (shen.pvar? V2599) (let A (shen.newpv V2789) (do (shen.bindv V2599 (cons A ()) V2789) (let Result (let V2603 (shen.lazyderef (tl V2591) V2789) (if (= () V2603) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2603) (do (shen.bindv V2603 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2603 V2789) Result))) false))) (do (shen.unbindv V2599 V2789) Result)))) false))) (do (shen.unbindv V2593 V2789) Result))) false))) (if (shen.pvar? V2592) (let A (shen.newpv V2789) (do (shen.bindv V2592 (cons vector (cons A ())) V2789) (let Result (let V2604 (shen.lazyderef (tl V2591) V2789) (if (= () V2604) (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2604) (do (shen.bindv V2604 () V2789) (let Result (let Hyp (tl V2582) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons (shen.lazyderef A V2789) ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons (cons vector (cons (shen.lazyderef A V2789) ())) ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2604 V2789) Result))) false))) (do (shen.unbindv V2592 V2789) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2605 (shen.lazyderef V2787 V2789) (if (cons? V2605) (let V2606 (shen.lazyderef (hd V2605) V2789) (if (cons? V2606) (let V2607 (shen.lazyderef (hd V2606) V2789) (if (cons? V2607) (let V2608 (shen.lazyderef (hd V2607) V2789) (if (= @s V2608) (let V2609 (shen.lazyderef (tl V2607) V2789) (if (cons? V2609) (let X (hd V2609) (let V2610 (shen.lazyderef (tl V2609) V2789) (if (cons? V2610) (let Y (hd V2610) (let V2611 (shen.lazyderef (tl V2610) V2789) (if (= () V2611) (let V2612 (shen.lazyderef (tl V2606) V2789) (if (cons? V2612) (let V2613 (shen.lazyderef (hd V2612) V2789) (if (= : V2613) (let V2614 (shen.lazyderef (tl V2612) V2789) (if (cons? V2614) (let V2615 (shen.lazyderef (hd V2614) V2789) (if (= string V2615) (let V2616 (shen.lazyderef (tl V2614) V2789) (if (= () V2616) (let Hyp (tl V2605) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons string ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2616) (do (shen.bindv V2616 () V2789) (let Result (let Hyp (tl V2605) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons string ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2616 V2789) Result))) false))) (if (shen.pvar? V2615) (do (shen.bindv V2615 string V2789) (let Result (let V2617 (shen.lazyderef (tl V2614) V2789) (if (= () V2617) (let Hyp (tl V2605) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons string ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (if (shen.pvar? V2617) (do (shen.bindv V2617 () V2789) (let Result (let Hyp (tl V2605) (do (shen.incinfs) (bind V2788 (cons (cons (shen.lazyderef X V2789) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2789) (cons : (cons string ()))) (shen.lazyderef Hyp V2789))) V2789 V2790))) (do (shen.unbindv V2617 V2789) Result))) false))) (do (shen.unbindv V2615 V2789) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2618 (shen.lazyderef V2787 V2789) (if (cons? V2618) (let X (hd V2618) (let Hyp (tl V2618) (let NewHyps (shen.newpv V2789) (do (shen.incinfs) (bind V2788 (cons (shen.lazyderef X V2789) (shen.lazyderef NewHyps V2789)) V2789 (freeze (shen.t*-hyps Hyp NewHyps V2789 V2790))))))) false)) Case)) Case)) Case)) Case)))
75
+ (defun shen.t*-hyps (V2819 V2820 V2821 V2822) (let Case (let V2566 (shen.lazyderef V2819 V2821) (if (cons? V2566) (let V2567 (shen.lazyderef (hd V2566) V2821) (if (cons? V2567) (let V2568 (shen.lazyderef (hd V2567) V2821) (if (cons? V2568) (let V2569 (shen.lazyderef (hd V2568) V2821) (if (= cons V2569) (let V2570 (shen.lazyderef (tl V2568) V2821) (if (cons? V2570) (let X (hd V2570) (let V2571 (shen.lazyderef (tl V2570) V2821) (if (cons? V2571) (let Y (hd V2571) (let V2572 (shen.lazyderef (tl V2571) V2821) (if (= () V2572) (let V2573 (shen.lazyderef (tl V2567) V2821) (if (cons? V2573) (let V2574 (shen.lazyderef (hd V2573) V2821) (if (= : V2574) (let V2575 (shen.lazyderef (tl V2573) V2821) (if (cons? V2575) (let V2576 (shen.lazyderef (hd V2575) V2821) (if (cons? V2576) (let V2577 (shen.lazyderef (hd V2576) V2821) (if (= list V2577) (let V2578 (shen.lazyderef (tl V2576) V2821) (if (cons? V2578) (let A (hd V2578) (let V2579 (shen.lazyderef (tl V2578) V2821) (if (= () V2579) (let V2580 (shen.lazyderef (tl V2575) V2821) (if (= () V2580) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2580) (do (shen.bindv V2580 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2580 V2821) Result))) false))) (if (shen.pvar? V2579) (do (shen.bindv V2579 () V2821) (let Result (let V2581 (shen.lazyderef (tl V2575) V2821) (if (= () V2581) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2581) (do (shen.bindv V2581 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2581 V2821) Result))) false))) (do (shen.unbindv V2579 V2821) Result))) false)))) (if (shen.pvar? V2578) (let A (shen.newpv V2821) (do (shen.bindv V2578 (cons A ()) V2821) (let Result (let V2582 (shen.lazyderef (tl V2575) V2821) (if (= () V2582) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2582) (do (shen.bindv V2582 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2582 V2821) Result))) false))) (do (shen.unbindv V2578 V2821) Result)))) false))) (if (shen.pvar? V2577) (do (shen.bindv V2577 list V2821) (let Result (let V2583 (shen.lazyderef (tl V2576) V2821) (if (cons? V2583) (let A (hd V2583) (let V2584 (shen.lazyderef (tl V2583) V2821) (if (= () V2584) (let V2585 (shen.lazyderef (tl V2575) V2821) (if (= () V2585) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2585) (do (shen.bindv V2585 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2585 V2821) Result))) false))) (if (shen.pvar? V2584) (do (shen.bindv V2584 () V2821) (let Result (let V2586 (shen.lazyderef (tl V2575) V2821) (if (= () V2586) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2586) (do (shen.bindv V2586 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2586 V2821) Result))) false))) (do (shen.unbindv V2584 V2821) Result))) false)))) (if (shen.pvar? V2583) (let A (shen.newpv V2821) (do (shen.bindv V2583 (cons A ()) V2821) (let Result (let V2587 (shen.lazyderef (tl V2575) V2821) (if (= () V2587) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2587) (do (shen.bindv V2587 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2587 V2821) Result))) false))) (do (shen.unbindv V2583 V2821) Result)))) false))) (do (shen.unbindv V2577 V2821) Result))) false))) (if (shen.pvar? V2576) (let A (shen.newpv V2821) (do (shen.bindv V2576 (cons list (cons A ())) V2821) (let Result (let V2588 (shen.lazyderef (tl V2575) V2821) (if (= () V2588) (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2588) (do (shen.bindv V2588 () V2821) (let Result (let Hyp (tl V2566) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons list (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2588 V2821) Result))) false))) (do (shen.unbindv V2576 V2821) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2589 (shen.lazyderef V2819 V2821) (if (cons? V2589) (let V2590 (shen.lazyderef (hd V2589) V2821) (if (cons? V2590) (let V2591 (shen.lazyderef (hd V2590) V2821) (if (cons? V2591) (let V2592 (shen.lazyderef (hd V2591) V2821) (if (= @p V2592) (let V2593 (shen.lazyderef (tl V2591) V2821) (if (cons? V2593) (let X (hd V2593) (let V2594 (shen.lazyderef (tl V2593) V2821) (if (cons? V2594) (let Y (hd V2594) (let V2595 (shen.lazyderef (tl V2594) V2821) (if (= () V2595) (let V2596 (shen.lazyderef (tl V2590) V2821) (if (cons? V2596) (let V2597 (shen.lazyderef (hd V2596) V2821) (if (= : V2597) (let V2598 (shen.lazyderef (tl V2596) V2821) (if (cons? V2598) (let V2599 (shen.lazyderef (hd V2598) V2821) (if (cons? V2599) (let A (hd V2599) (let V2600 (shen.lazyderef (tl V2599) V2821) (if (cons? V2600) (let V2601 (shen.lazyderef (hd V2600) V2821) (if (= * V2601) (let V2602 (shen.lazyderef (tl V2600) V2821) (if (cons? V2602) (let B (hd V2602) (let V2603 (shen.lazyderef (tl V2602) V2821) (if (= () V2603) (let V2604 (shen.lazyderef (tl V2598) V2821) (if (= () V2604) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2604) (do (shen.bindv V2604 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2604 V2821) Result))) false))) (if (shen.pvar? V2603) (do (shen.bindv V2603 () V2821) (let Result (let V2605 (shen.lazyderef (tl V2598) V2821) (if (= () V2605) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2605) (do (shen.bindv V2605 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2605 V2821) Result))) false))) (do (shen.unbindv V2603 V2821) Result))) false)))) (if (shen.pvar? V2602) (let B (shen.newpv V2821) (do (shen.bindv V2602 (cons B ()) V2821) (let Result (let V2606 (shen.lazyderef (tl V2598) V2821) (if (= () V2606) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2606) (do (shen.bindv V2606 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2606 V2821) Result))) false))) (do (shen.unbindv V2602 V2821) Result)))) false))) (if (shen.pvar? V2601) (do (shen.bindv V2601 * V2821) (let Result (let V2607 (shen.lazyderef (tl V2600) V2821) (if (cons? V2607) (let B (hd V2607) (let V2608 (shen.lazyderef (tl V2607) V2821) (if (= () V2608) (let V2609 (shen.lazyderef (tl V2598) V2821) (if (= () V2609) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2609) (do (shen.bindv V2609 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2609 V2821) Result))) false))) (if (shen.pvar? V2608) (do (shen.bindv V2608 () V2821) (let Result (let V2610 (shen.lazyderef (tl V2598) V2821) (if (= () V2610) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2610) (do (shen.bindv V2610 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2610 V2821) Result))) false))) (do (shen.unbindv V2608 V2821) Result))) false)))) (if (shen.pvar? V2607) (let B (shen.newpv V2821) (do (shen.bindv V2607 (cons B ()) V2821) (let Result (let V2611 (shen.lazyderef (tl V2598) V2821) (if (= () V2611) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2611) (do (shen.bindv V2611 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2611 V2821) Result))) false))) (do (shen.unbindv V2607 V2821) Result)))) false))) (do (shen.unbindv V2601 V2821) Result))) false))) (if (shen.pvar? V2600) (let B (shen.newpv V2821) (do (shen.bindv V2600 (cons * (cons B ())) V2821) (let Result (let V2612 (shen.lazyderef (tl V2598) V2821) (if (= () V2612) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2612) (do (shen.bindv V2612 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2612 V2821) Result))) false))) (do (shen.unbindv V2600 V2821) Result)))) false)))) (if (shen.pvar? V2599) (let A (shen.newpv V2821) (let B (shen.newpv V2821) (do (shen.bindv V2599 (cons A (cons * (cons B ()))) V2821) (let Result (let V2613 (shen.lazyderef (tl V2598) V2821) (if (= () V2613) (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2613) (do (shen.bindv V2613 () V2821) (let Result (let Hyp (tl V2589) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (shen.lazyderef B V2821) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2613 V2821) Result))) false))) (do (shen.unbindv V2599 V2821) Result))))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2614 (shen.lazyderef V2819 V2821) (if (cons? V2614) (let V2615 (shen.lazyderef (hd V2614) V2821) (if (cons? V2615) (let V2616 (shen.lazyderef (hd V2615) V2821) (if (cons? V2616) (let V2617 (shen.lazyderef (hd V2616) V2821) (if (= @v V2617) (let V2618 (shen.lazyderef (tl V2616) V2821) (if (cons? V2618) (let X (hd V2618) (let V2619 (shen.lazyderef (tl V2618) V2821) (if (cons? V2619) (let Y (hd V2619) (let V2620 (shen.lazyderef (tl V2619) V2821) (if (= () V2620) (let V2621 (shen.lazyderef (tl V2615) V2821) (if (cons? V2621) (let V2622 (shen.lazyderef (hd V2621) V2821) (if (= : V2622) (let V2623 (shen.lazyderef (tl V2621) V2821) (if (cons? V2623) (let V2624 (shen.lazyderef (hd V2623) V2821) (if (cons? V2624) (let V2625 (shen.lazyderef (hd V2624) V2821) (if (= vector V2625) (let V2626 (shen.lazyderef (tl V2624) V2821) (if (cons? V2626) (let A (hd V2626) (let V2627 (shen.lazyderef (tl V2626) V2821) (if (= () V2627) (let V2628 (shen.lazyderef (tl V2623) V2821) (if (= () V2628) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2628) (do (shen.bindv V2628 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2628 V2821) Result))) false))) (if (shen.pvar? V2627) (do (shen.bindv V2627 () V2821) (let Result (let V2629 (shen.lazyderef (tl V2623) V2821) (if (= () V2629) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2629) (do (shen.bindv V2629 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2629 V2821) Result))) false))) (do (shen.unbindv V2627 V2821) Result))) false)))) (if (shen.pvar? V2626) (let A (shen.newpv V2821) (do (shen.bindv V2626 (cons A ()) V2821) (let Result (let V2630 (shen.lazyderef (tl V2623) V2821) (if (= () V2630) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2630) (do (shen.bindv V2630 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2630 V2821) Result))) false))) (do (shen.unbindv V2626 V2821) Result)))) false))) (if (shen.pvar? V2625) (do (shen.bindv V2625 vector V2821) (let Result (let V2631 (shen.lazyderef (tl V2624) V2821) (if (cons? V2631) (let A (hd V2631) (let V2632 (shen.lazyderef (tl V2631) V2821) (if (= () V2632) (let V2633 (shen.lazyderef (tl V2623) V2821) (if (= () V2633) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2633) (do (shen.bindv V2633 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2633 V2821) Result))) false))) (if (shen.pvar? V2632) (do (shen.bindv V2632 () V2821) (let Result (let V2634 (shen.lazyderef (tl V2623) V2821) (if (= () V2634) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2634) (do (shen.bindv V2634 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2634 V2821) Result))) false))) (do (shen.unbindv V2632 V2821) Result))) false)))) (if (shen.pvar? V2631) (let A (shen.newpv V2821) (do (shen.bindv V2631 (cons A ()) V2821) (let Result (let V2635 (shen.lazyderef (tl V2623) V2821) (if (= () V2635) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2635) (do (shen.bindv V2635 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2635 V2821) Result))) false))) (do (shen.unbindv V2631 V2821) Result)))) false))) (do (shen.unbindv V2625 V2821) Result))) false))) (if (shen.pvar? V2624) (let A (shen.newpv V2821) (do (shen.bindv V2624 (cons vector (cons A ())) V2821) (let Result (let V2636 (shen.lazyderef (tl V2623) V2821) (if (= () V2636) (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2636) (do (shen.bindv V2636 () V2821) (let Result (let Hyp (tl V2614) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons (shen.lazyderef A V2821) ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons (cons vector (cons (shen.lazyderef A V2821) ())) ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2636 V2821) Result))) false))) (do (shen.unbindv V2624 V2821) Result)))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2637 (shen.lazyderef V2819 V2821) (if (cons? V2637) (let V2638 (shen.lazyderef (hd V2637) V2821) (if (cons? V2638) (let V2639 (shen.lazyderef (hd V2638) V2821) (if (cons? V2639) (let V2640 (shen.lazyderef (hd V2639) V2821) (if (= @s V2640) (let V2641 (shen.lazyderef (tl V2639) V2821) (if (cons? V2641) (let X (hd V2641) (let V2642 (shen.lazyderef (tl V2641) V2821) (if (cons? V2642) (let Y (hd V2642) (let V2643 (shen.lazyderef (tl V2642) V2821) (if (= () V2643) (let V2644 (shen.lazyderef (tl V2638) V2821) (if (cons? V2644) (let V2645 (shen.lazyderef (hd V2644) V2821) (if (= : V2645) (let V2646 (shen.lazyderef (tl V2644) V2821) (if (cons? V2646) (let V2647 (shen.lazyderef (hd V2646) V2821) (if (= string V2647) (let V2648 (shen.lazyderef (tl V2646) V2821) (if (= () V2648) (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2648) (do (shen.bindv V2648 () V2821) (let Result (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2648 V2821) Result))) false))) (if (shen.pvar? V2647) (do (shen.bindv V2647 string V2821) (let Result (let V2649 (shen.lazyderef (tl V2646) V2821) (if (= () V2649) (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (if (shen.pvar? V2649) (do (shen.bindv V2649 () V2821) (let Result (let Hyp (tl V2637) (do (shen.incinfs) (bind V2820 (cons (cons (shen.lazyderef X V2821) (cons : (cons string ()))) (cons (cons (shen.lazyderef Y V2821) (cons : (cons string ()))) (shen.lazyderef Hyp V2821))) V2821 V2822))) (do (shen.unbindv V2649 V2821) Result))) false))) (do (shen.unbindv V2647 V2821) Result))) false))) false)) false)) false)) false))) false))) false)) false)) false)) false)) false)) (if (= Case false) (let V2650 (shen.lazyderef V2819 V2821) (if (cons? V2650) (let X (hd V2650) (let Hyp (tl V2650) (let NewHyps (shen.newpv V2821) (do (shen.incinfs) (bind V2820 (cons (shen.lazyderef X V2821) (shen.lazyderef NewHyps V2821)) V2821 (freeze (shen.t*-hyps Hyp NewHyps V2821 V2822))))))) false)) Case)) Case)) Case)) Case)))
76
76
 
77
- (defun shen.show (V2803 V2804 V2805 V2806) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2803 V2805)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2804 V2805) 1) (do (pr "
78
- > " (stoutput)) (do (shen.pause-for-user (value *language*)) (thaw V2806))))))))) (true (thaw V2806))))
77
+ (defun shen.show (V2835 V2836 V2837 V2838) (cond ((value shen.*spy*) (do (shen.line) (do (shen.show-p (shen.deref V2835 V2837)) (do (nl 1) (do (nl 1) (do (shen.show-assumptions (shen.deref V2836 V2837) 1) (do (pr "
78
+ > " (stoutput)) (do (shen.pause-for-user (value *language*)) (thaw V2838))))))))) (true (thaw V2838))))
79
79
 
80
80
  (defun shen.line () (let Infs (inferences) (pr (cn "____________________________________________________________ " (shen.app Infs (cn " inference" (shen.app (if (= 1 Infs) "" "s") "
81
81
  ?- " shen.a)) shen.a)) (stoutput))))
82
82
 
83
- (defun shen.show-p (V2807) (cond ((and (cons? V2807) (and (cons? (tl V2807)) (and (= : (hd (tl V2807))) (and (cons? (tl (tl V2807))) (= () (tl (tl (tl V2807)))))))) (pr (shen.app (hd V2807) (cn " : " (shen.app (hd (tl (tl V2807))) "" shen.r)) shen.r) (stoutput))) (true (pr (shen.app V2807 "" shen.r) (stoutput)))))
83
+ (defun shen.show-p (V2839) (cond ((and (cons? V2839) (and (cons? (tl V2839)) (and (= : (hd (tl V2839))) (and (cons? (tl (tl V2839))) (= () (tl (tl (tl V2839)))))))) (pr (shen.app (hd V2839) (cn " : " (shen.app (hd (tl (tl V2839))) "" shen.r)) shen.r) (stoutput))) (true (pr (shen.app V2839 "" shen.r) (stoutput)))))
84
84
 
85
- (defun shen.show-assumptions (V2810 V2811) (cond ((= () V2810) shen.skip) ((cons? V2810) (do (pr (shen.app V2811 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2810)) (do (nl 1) (shen.show-assumptions (tl V2810) (+ V2811 1)))))) (true (shen.sys-error shen.show-assumptions))))
85
+ (defun shen.show-assumptions (V2842 V2843) (cond ((= () V2842) shen.skip) ((cons? V2842) (do (pr (shen.app V2843 ". " shen.a) (stoutput)) (do (shen.show-p (hd V2842)) (do (nl 1) (shen.show-assumptions (tl V2842) (+ V2843 1)))))) (true (shen.sys-error shen.show-assumptions))))
86
86
 
87
- (defun shen.pause-for-user (V2816) (cond ((= "Common Lisp" V2816) (let I (FORMAT () "~C" (READ-CHAR)) (if (= I "a") (simple-error "input aborted
87
+ (defun shen.pause-for-user (V2848) (cond ((= "Common Lisp" V2848) (let I (FORMAT () "~C" (READ-CHAR)) (if (= I "a") (simple-error "input aborted
88
88
  ") (nl 1)))) (true (let I (shen.read-char) (if (= I "a") (simple-error "input aborted
89
89
  ") (nl 1))))))
90
90
 
91
91
  (defun shen.read-char () (shen.read-char-h (read-byte (stinput)) 0))
92
92
 
93
- (defun shen.read-char-h (V2819 V2820) (cond ((and (= -1 V2819) (= 0 V2820)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 0 V2820) (shen.read-char-h (read-byte (stinput)) 0)) ((and (= -1 V2819) (= 1 V2820)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 1 V2820) (n->string V2819)) (true (shen.sys-error shen.read-char-h))))
93
+ (defun shen.read-char-h (V2851 V2852) (cond ((and (= -1 V2851) (= 0 V2852)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 0 V2852) (shen.read-char-h (read-byte (stinput)) 0)) ((and (= -1 V2851) (= 1 V2852)) (shen.read-char-h (read-byte (stinput)) 1)) ((= 1 V2852) (n->string V2851)) (true (shen.sys-error shen.read-char-h))))
94
94
 
95
- (defun shen.typedf? (V2821) (element? V2821 (value shen.*signedfuncs*)))
95
+ (defun shen.typedf? (V2853) (element? V2853 (value shen.*signedfuncs*)))
96
96
 
97
- (defun shen.sigf (V2822) (concat shen.type-signature-of- V2822))
97
+ (defun shen.sigf (V2854) (concat shen.type-signature-of- V2854))
98
98
 
99
99
  (defun shen.placeholder () (gensym &&))
100
100
 
101
- (defun shen.base (V2823 V2824 V2825 V2826) (let Case (let V2521 (shen.lazyderef V2824 V2825) (if (= number V2521) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2823 V2825)) V2825 V2826)) (if (shen.pvar? V2521) (do (shen.bindv V2521 number V2825) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2823 V2825)) V2825 V2826)) (do (shen.unbindv V2521 V2825) Result))) false))) (if (= Case false) (let Case (let V2522 (shen.lazyderef V2824 V2825) (if (= boolean V2522) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2823 V2825)) V2825 V2826)) (if (shen.pvar? V2522) (do (shen.bindv V2522 boolean V2825) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2823 V2825)) V2825 V2826)) (do (shen.unbindv V2522 V2825) Result))) false))) (if (= Case false) (let Case (let V2523 (shen.lazyderef V2824 V2825) (if (= string V2523) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2823 V2825)) V2825 V2826)) (if (shen.pvar? V2523) (do (shen.bindv V2523 string V2825) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2823 V2825)) V2825 V2826)) (do (shen.unbindv V2523 V2825) Result))) false))) (if (= Case false) (let Case (let V2524 (shen.lazyderef V2824 V2825) (if (= symbol V2524) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2823 V2825)) V2825 (freeze (fwhen (not (shen.placeholder? (shen.lazyderef V2823 V2825))) V2825 V2826)))) (if (shen.pvar? V2524) (do (shen.bindv V2524 symbol V2825) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2823 V2825)) V2825 (freeze (fwhen (not (shen.placeholder? (shen.lazyderef V2823 V2825))) V2825 V2826)))) (do (shen.unbindv V2524 V2825) Result))) false))) (if (= Case false) (let V2525 (shen.lazyderef V2823 V2825) (if (= () V2525) (let V2526 (shen.lazyderef V2824 V2825) (if (cons? V2526) (let V2527 (shen.lazyderef (hd V2526) V2825) (if (= list V2527) (let V2528 (shen.lazyderef (tl V2526) V2825) (if (cons? V2528) (let A (hd V2528) (let V2529 (shen.lazyderef (tl V2528) V2825) (if (= () V2529) (do (shen.incinfs) (thaw V2826)) (if (shen.pvar? V2529) (do (shen.bindv V2529 () V2825) (let Result (do (shen.incinfs) (thaw V2826)) (do (shen.unbindv V2529 V2825) Result))) false)))) (if (shen.pvar? V2528) (let A (shen.newpv V2825) (do (shen.bindv V2528 (cons A ()) V2825) (let Result (do (shen.incinfs) (thaw V2826)) (do (shen.unbindv V2528 V2825) Result)))) false))) (if (shen.pvar? V2527) (do (shen.bindv V2527 list V2825) (let Result (let V2530 (shen.lazyderef (tl V2526) V2825) (if (cons? V2530) (let A (hd V2530) (let V2531 (shen.lazyderef (tl V2530) V2825) (if (= () V2531) (do (shen.incinfs) (thaw V2826)) (if (shen.pvar? V2531) (do (shen.bindv V2531 () V2825) (let Result (do (shen.incinfs) (thaw V2826)) (do (shen.unbindv V2531 V2825) Result))) false)))) (if (shen.pvar? V2530) (let A (shen.newpv V2825) (do (shen.bindv V2530 (cons A ()) V2825) (let Result (do (shen.incinfs) (thaw V2826)) (do (shen.unbindv V2530 V2825) Result)))) false))) (do (shen.unbindv V2527 V2825) Result))) false))) (if (shen.pvar? V2526) (let A (shen.newpv V2825) (do (shen.bindv V2526 (cons list (cons A ())) V2825) (let Result (do (shen.incinfs) (thaw V2826)) (do (shen.unbindv V2526 V2825) Result)))) false))) false)) Case)) Case)) Case)) Case)))
101
+ (defun shen.base (V2855 V2856 V2857 V2858) (let Case (let V2553 (shen.lazyderef V2856 V2857) (if (= number V2553) (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2855 V2857)) V2857 V2858)) (if (shen.pvar? V2553) (do (shen.bindv V2553 number V2857) (let Result (do (shen.incinfs) (fwhen (number? (shen.lazyderef V2855 V2857)) V2857 V2858)) (do (shen.unbindv V2553 V2857) Result))) false))) (if (= Case false) (let Case (let V2554 (shen.lazyderef V2856 V2857) (if (= boolean V2554) (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2855 V2857)) V2857 V2858)) (if (shen.pvar? V2554) (do (shen.bindv V2554 boolean V2857) (let Result (do (shen.incinfs) (fwhen (boolean? (shen.lazyderef V2855 V2857)) V2857 V2858)) (do (shen.unbindv V2554 V2857) Result))) false))) (if (= Case false) (let Case (let V2555 (shen.lazyderef V2856 V2857) (if (= string V2555) (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2855 V2857)) V2857 V2858)) (if (shen.pvar? V2555) (do (shen.bindv V2555 string V2857) (let Result (do (shen.incinfs) (fwhen (string? (shen.lazyderef V2855 V2857)) V2857 V2858)) (do (shen.unbindv V2555 V2857) Result))) false))) (if (= Case false) (let Case (let V2556 (shen.lazyderef V2856 V2857) (if (= symbol V2556) (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2855 V2857)) V2857 (freeze (fwhen (not (shen.placeholder? (shen.lazyderef V2855 V2857))) V2857 V2858)))) (if (shen.pvar? V2556) (do (shen.bindv V2556 symbol V2857) (let Result (do (shen.incinfs) (fwhen (symbol? (shen.lazyderef V2855 V2857)) V2857 (freeze (fwhen (not (shen.placeholder? (shen.lazyderef V2855 V2857))) V2857 V2858)))) (do (shen.unbindv V2556 V2857) Result))) false))) (if (= Case false) (let V2557 (shen.lazyderef V2855 V2857) (if (= () V2557) (let V2558 (shen.lazyderef V2856 V2857) (if (cons? V2558) (let V2559 (shen.lazyderef (hd V2558) V2857) (if (= list V2559) (let V2560 (shen.lazyderef (tl V2558) V2857) (if (cons? V2560) (let A (hd V2560) (let V2561 (shen.lazyderef (tl V2560) V2857) (if (= () V2561) (do (shen.incinfs) (thaw V2858)) (if (shen.pvar? V2561) (do (shen.bindv V2561 () V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2561 V2857) Result))) false)))) (if (shen.pvar? V2560) (let A (shen.newpv V2857) (do (shen.bindv V2560 (cons A ()) V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2560 V2857) Result)))) false))) (if (shen.pvar? V2559) (do (shen.bindv V2559 list V2857) (let Result (let V2562 (shen.lazyderef (tl V2558) V2857) (if (cons? V2562) (let A (hd V2562) (let V2563 (shen.lazyderef (tl V2562) V2857) (if (= () V2563) (do (shen.incinfs) (thaw V2858)) (if (shen.pvar? V2563) (do (shen.bindv V2563 () V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2563 V2857) Result))) false)))) (if (shen.pvar? V2562) (let A (shen.newpv V2857) (do (shen.bindv V2562 (cons A ()) V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2562 V2857) Result)))) false))) (do (shen.unbindv V2559 V2857) Result))) false))) (if (shen.pvar? V2558) (let A (shen.newpv V2857) (do (shen.bindv V2558 (cons list (cons A ())) V2857) (let Result (do (shen.incinfs) (thaw V2858)) (do (shen.unbindv V2558 V2857) Result)))) false))) false)) Case)) Case)) Case)) Case)))
102
102
 
103
- (defun shen.placeholder? (V2827) (and (symbol? V2827) (shen.placeholder-help? (str V2827))))
103
+ (defun shen.placeholder? (V2859) (and (symbol? V2859) (shen.placeholder-help? (str V2859))))
104
104
 
105
- (defun shen.placeholder-help? (V2834) (cond ((and (shen.+string? V2834) (and (= "&" (pos V2834 0)) (and (shen.+string? (tlstr V2834)) (= "&" (pos (tlstr V2834) 0))))) true) (true false)))
105
+ (defun shen.placeholder-help? (V2866) (cond ((and (shen.+string? V2866) (and (= "&" (pos V2866 0)) (and (shen.+string? (tlstr V2866)) (= "&" (pos (tlstr V2866) 0))))) true) (true false)))
106
106
 
107
- (defun shen.by_hypothesis (V2835 V2836 V2837 V2838 V2839) (let Case (let V2512 (shen.lazyderef V2837 V2838) (if (cons? V2512) (let V2513 (shen.lazyderef (hd V2512) V2838) (if (cons? V2513) (let Y (hd V2513) (let V2514 (shen.lazyderef (tl V2513) V2838) (if (cons? V2514) (let V2515 (shen.lazyderef (hd V2514) V2838) (if (= : V2515) (let V2516 (shen.lazyderef (tl V2514) V2838) (if (cons? V2516) (let B (hd V2516) (let V2517 (shen.lazyderef (tl V2516) V2838) (if (= () V2517) (do (shen.incinfs) (identical V2835 Y V2838 (freeze (unify! V2836 B V2838 V2839)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2518 (shen.lazyderef V2837 V2838) (if (cons? V2518) (let Hyp (tl V2518) (do (shen.incinfs) (shen.by_hypothesis V2835 V2836 Hyp V2838 V2839))) false)) Case)))
107
+ (defun shen.by_hypothesis (V2867 V2868 V2869 V2870 V2871) (let Case (let V2544 (shen.lazyderef V2869 V2870) (if (cons? V2544) (let V2545 (shen.lazyderef (hd V2544) V2870) (if (cons? V2545) (let Y (hd V2545) (let V2546 (shen.lazyderef (tl V2545) V2870) (if (cons? V2546) (let V2547 (shen.lazyderef (hd V2546) V2870) (if (= : V2547) (let V2548 (shen.lazyderef (tl V2546) V2870) (if (cons? V2548) (let B (hd V2548) (let V2549 (shen.lazyderef (tl V2548) V2870) (if (= () V2549) (do (shen.incinfs) (identical V2867 Y V2870 (freeze (unify! V2868 B V2870 V2871)))) false))) false)) false)) false))) false)) false)) (if (= Case false) (let V2550 (shen.lazyderef V2869 V2870) (if (cons? V2550) (let Hyp (tl V2550) (do (shen.incinfs) (shen.by_hypothesis V2867 V2868 Hyp V2870 V2871))) false)) Case)))
108
108
 
109
- (defun shen.t*-def (V2840 V2841 V2842 V2843 V2844) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2506 (shen.lazyderef V2840 V2843) (if (cons? V2506) (let V2507 (shen.lazyderef (hd V2506) V2843) (if (= define V2507) (let V2508 (shen.lazyderef (tl V2506) V2843) (if (cons? V2508) (let F (hd V2508) (let X (tl V2508) (let Error (shen.newpv V2843) (let Sig+Rules (shen.newpv V2843) (let Vars (shen.newpv V2843) (let Rules (shen.newpv V2843) (let Sig&& (shen.newpv V2843) (let Declare (shen.newpv V2843) (let Sig (shen.newpv V2843) (do (shen.incinfs) (bind Sig+Rules (compile shen.<sig+rules> (shen.lazyderef X V2843) ()) V2843 (freeze (bind Error (if (= (shen.lazyderef Sig+Rules V2843) (fail)) (shen.errordef (shen.lazyderef F V2843)) shen.skip) V2843 (freeze (bind Sig (hd (shen.lazyderef Sig+Rules V2843)) V2843 (freeze (bind Rules (tl (shen.lazyderef Sig+Rules V2843)) V2843 (freeze (bind Vars (shen.extract_vars (shen.lazyderef Sig V2843)) V2843 (freeze (bind Sig&& (shen.placeholders (shen.lazyderef Sig V2843) (shen.lazyderef Vars V2843)) V2843 (freeze (cut Throwcontrol V2843 (freeze (shen.t*-rules Rules Sig&& 1 F (cons (cons F (cons : (cons Sig&& ()))) V2842) V2843 (freeze (bind Declare (declare (shen.lazyderef F V2843) (shen.lazyderef Sig V2843)) V2843 (freeze (unify! V2841 Sig V2843 V2844))))))))))))))))))))))))))))) false)) false)) false)))))
109
+ (defun shen.t*-def (V2872 V2873 V2874 V2875 V2876) (let V2538 (shen.lazyderef V2872 V2875) (if (cons? V2538) (let V2539 (shen.lazyderef (hd V2538) V2875) (if (= define V2539) (let V2540 (shen.lazyderef (tl V2538) V2875) (if (cons? V2540) (let F (hd V2540) (let X (tl V2540) (let E (shen.newpv V2875) (do (shen.incinfs) (shen.t*-defh (compile shen.<sig+rules> X (lambda E (if (cons? E) (simple-error (cn "parse error here: " (shen.app E "
110
+ " shen.s))) (simple-error "parse error
111
+ ")))) F V2873 V2874 V2875 V2876))))) false)) false)) false)))
110
112
 
111
- (defun shen.<sig+rules> (V2849) (let Result (let Parse_shen.<signature> (shen.<signature> V2849) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<trules> (shen.<trules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<trules>)) (shen.pair (hd Parse_shen.<trules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<trules>))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
113
+ (defun shen.t*-defh (V2877 V2878 V2879 V2880 V2881 V2882) (let V2534 (shen.lazyderef V2877 V2881) (if (cons? V2534) (let Sig (hd V2534) (let Rules (tl V2534) (do (shen.incinfs) (shen.t*-defhh Sig (shen.ue Sig) V2878 V2879 V2880 Rules V2881 V2882)))) false)))
112
114
 
113
- (defun shen.placeholders (V2854 V2855) (cond ((cons? V2854) (map (lambda Z (shen.placeholders Z V2855)) V2854)) ((element? V2854 V2855) (concat && V2854)) (true V2854)))
115
+ (defun shen.t*-defhh (V2883 V2884 V2885 V2886 V2887 V2888 V2889 V2890) (do (shen.incinfs) (shen.t*-rules V2888 V2884 1 V2885 (cons (cons V2885 (cons : (cons V2884 ()))) V2887) V2889 (freeze (shen.memo V2885 V2883 V2886 V2889 V2890)))))
114
116
 
115
- (defun shen.<trules> (V2860) (let Result (let Parse_shen.<trule> (shen.<trule> V2860) (if (not (= (fail) Parse_shen.<trule>)) (let Parse_shen.<trules> (shen.<trules> Parse_shen.<trule>) (if (not (= (fail) Parse_shen.<trules>)) (shen.pair (hd Parse_shen.<trules>) (cons (shen.hdtl Parse_shen.<trule>) (shen.hdtl Parse_shen.<trules>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_shen.<trule> (shen.<trule> V2860) (if (not (= (fail) Parse_shen.<trule>)) (shen.pair (hd Parse_shen.<trule>) (cons (shen.hdtl Parse_shen.<trule>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
117
+ (defun shen.memo (V2891 V2892 V2893 V2894 V2895) (let Jnk (shen.newpv V2894) (do (shen.incinfs) (unify! V2893 V2892 V2894 (freeze (bind Jnk (declare (shen.lazyderef V2891 V2894) (shen.lazyderef V2893 V2894)) V2894 V2895))))))
116
118
 
117
- (defun shen.<trule> (V2865) (let Result (let Parse_shen.<patterns> (shen.<patterns> V2865) (if (not (= (fail) Parse_shen.<patterns>)) (let Parse_shen.<arrow> (shen.<arrow> Parse_shen.<patterns>) (if (not (= (fail) Parse_shen.<arrow>)) (let Parse_shen.<action> (shen.<action> Parse_shen.<arrow>) (if (not (= (fail) Parse_shen.<action>)) (let Parse_shen.<guard?> (shen.<guard?> Parse_shen.<action>) (if (not (= (fail) Parse_shen.<guard?>)) (shen.pair (hd Parse_shen.<guard?>) (let Parse_Vars (shen.extract_vars (shen.hdtl Parse_shen.<patterns>)) (let Parse_Patterns (shen.placeholders (shen.hdtl Parse_shen.<patterns>) Parse_Vars) (let Parse_Action (shen.placeholders (shen.curry (shen.hdtl Parse_shen.<action>)) Parse_Vars) (let Parse_Guard (shen.placeholders (shen.curry (shen.hdtl Parse_shen.<guard?>)) Parse_Vars) (shen.form-rule Parse_Patterns (shen.hdtl Parse_shen.<arrow>) Parse_Action Parse_Guard)))))) (fail))) (fail))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
119
+ (defun shen.<sig+rules> (V2900) (let Result (let Parse_shen.<signature> (shen.<signature> V2900) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_shen.<rules> (shen.<rules> Parse_shen.<signature>) (if (not (= (fail) Parse_shen.<rules>)) (shen.pair (hd Parse_shen.<rules>) (cons (shen.hdtl Parse_shen.<signature>) (shen.hdtl Parse_shen.<rules>))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
118
120
 
119
- (defun shen.form-rule (V2866 V2867 V2868 V2869) (cond ((= shen.forward V2867) (cons V2866 (cons (if (= V2869 shen.skip) V2868 (cons where (cons V2869 (cons V2868 ())))) ()))) ((and (= shen.backward V2867) (and (cons? V2868) (and (cons? (hd V2868)) (and (= fail-if (hd (hd V2868))) (and (cons? (tl (hd V2868))) (and (= () (tl (tl (hd V2868)))) (and (cons? (tl V2868)) (= () (tl (tl V2868)))))))))) (cons V2866 (cons (if (= V2869 shen.skip) (cons where (cons (cons not (cons (cons (hd (tl (hd V2868))) (tl V2868)) ())) (tl V2868))) (cons where (cons (cons (cons and (cons V2869 ())) (cons (cons not (cons (cons (hd (tl (hd V2868))) (tl V2868)) ())) ())) (tl V2868)))) ()))) ((= shen.backward V2867) (cons V2866 (cons (if (= V2869 shen.skip) (cons where (cons (cons not (cons (cons (cons == (cons V2868 ())) (cons (cons fail ()) ())) ())) (cons V2868 ()))) (cons where (cons (cons (cons and (cons V2869 ())) (cons (cons not (cons (cons (cons == (cons V2868 ())) (cons (cons fail ()) ())) ())) ())) (cons V2868 ())))) ()))) (true (shen.sys-error shen.form-rule))))
121
+ (defun shen.ue (V2901) (cond ((cons? V2901) (map shen.ue V2901)) ((variable? V2901) (concat && V2901)) (true V2901)))
120
122
 
121
- (defun shen.<guard?> (V2874) (let Result (if (and (cons? (hd V2874)) (= where (hd (hd V2874)))) (let Parse_shen.<guard> (shen.<guard> (shen.pair (tl (hd V2874)) (shen.hdtl V2874))) (if (not (= (fail) Parse_shen.<guard>)) (shen.pair (hd Parse_shen.<guard>) (shen.hdtl Parse_shen.<guard>)) (fail))) (fail)) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V2874) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) shen.skip) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
123
+ (defun shen.t*-rules (V2902 V2903 V2904 V2905 V2906 V2907 V2908) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2509 (shen.lazyderef V2902 V2907) (if (= () V2509) (do (shen.incinfs) (thaw V2908)) false)) (if (= Case false) (let Case (let V2510 (shen.lazyderef V2902 V2907) (if (cons? V2510) (let V2511 (shen.lazyderef (hd V2510) V2907) (if (cons? V2511) (let V2512 (shen.lazyderef (hd V2511) V2907) (if (= () V2512) (let V2513 (shen.lazyderef (tl V2511) V2907) (if (cons? V2513) (let Action (hd V2513) (let V2514 (shen.lazyderef (tl V2513) V2907) (if (= () V2514) (let Rules (tl V2510) (let V2515 (shen.lazyderef V2903 V2907) (if (cons? V2515) (let V2516 (shen.lazyderef (hd V2515) V2907) (if (= --> V2516) (let V2517 (shen.lazyderef (tl V2515) V2907) (if (cons? V2517) (let A (hd V2517) (let V2518 (shen.lazyderef (tl V2517) V2907) (if (= () V2518) (do (shen.incinfs) (shen.t*-rule (cons () (cons (shen.ue Action) ())) A V2906 V2907 (freeze (cut Throwcontrol V2907 (freeze (shen.t*-rules Rules A (+ V2904 1) V2905 V2906 V2907 V2908)))))) false))) false)) false)) false))) false))) false)) false)) false)) false)) (if (= Case false) (let Case (let V2519 (shen.lazyderef V2902 V2907) (if (cons? V2519) (let Rule (hd V2519) (let Rules (tl V2519) (do (shen.incinfs) (shen.t*-rule (shen.ue Rule) V2903 V2906 V2907 (freeze (cut Throwcontrol V2907 (freeze (shen.t*-rules Rules V2903 (+ V2904 1) V2905 V2906 V2907 V2908)))))))) false)) (if (= Case false) (let Err (shen.newpv V2907) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2904 V2907) (cn " of " (shen.app (shen.lazyderef V2905 V2907) "" shen.a)) shen.a))) V2907 V2908))) Case)) Case)) Case)))))
122
124
 
123
- (defun shen.<arrow> (V2879) (let Result (if (and (cons? (hd V2879)) (= -> (hd (hd V2879)))) (shen.pair (hd (shen.pair (tl (hd V2879)) (shen.hdtl V2879))) shen.forward) (fail)) (if (= Result (fail)) (let Result (if (and (cons? (hd V2879)) (= <- (hd (hd V2879)))) (shen.pair (hd (shen.pair (tl (hd V2879)) (shen.hdtl V2879))) shen.backward) (fail)) (if (= Result (fail)) (fail) Result)) Result)))
125
+ (defun shen.t*-rule (V2909 V2910 V2911 V2912 V2913) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2491 (shen.lazyderef V2909 V2912) (if (cons? V2491) (let V2492 (shen.lazyderef (hd V2491) V2912) (if (= () V2492) (let V2493 (shen.lazyderef (tl V2491) V2912) (if (cons? V2493) (let Action (hd V2493) (let V2494 (shen.lazyderef (tl V2493) V2912) (if (= () V2494) (do (shen.incinfs) (cut Throwcontrol V2912 (freeze (shen.t*-action (shen.curry Action) V2910 V2911 V2912 V2913)))) false))) false)) false)) false)) (if (= Case false) (let V2495 (shen.lazyderef V2909 V2912) (if (cons? V2495) (let V2496 (shen.lazyderef (hd V2495) V2912) (if (cons? V2496) (let Pattern (hd V2496) (let Patterns (tl V2496) (let V2497 (shen.lazyderef (tl V2495) V2912) (if (cons? V2497) (let Action (hd V2497) (let V2498 (shen.lazyderef (tl V2497) V2912) (if (= () V2498) (let V2499 (shen.lazyderef V2910 V2912) (if (cons? V2499) (let A (hd V2499) (let V2500 (shen.lazyderef (tl V2499) V2912) (if (cons? V2500) (let V2501 (shen.lazyderef (hd V2500) V2912) (if (= --> V2501) (let V2502 (shen.lazyderef (tl V2500) V2912) (if (cons? V2502) (let B (hd V2502) (let V2503 (shen.lazyderef (tl V2502) V2912) (if (= () V2503) (do (shen.incinfs) (shen.t*-pattern Pattern A V2912 (freeze (cut Throwcontrol V2912 (freeze (shen.t*-rule (cons Patterns (cons Action ())) B (cons (cons Pattern (cons : (cons A ()))) V2911) V2912 V2913)))))) false))) false)) false)) false))) false)) false))) false)))) false)) false)) Case)))))
124
126
 
125
- (defun shen.errordef (V2880) (simple-error (cn "syntax error in " (shen.app V2880 "
126
- " shen.a))))
127
+ (defun shen.t*-action (V2914 V2915 V2916 V2917 V2918) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2468 (shen.lazyderef V2914 V2917) (if (cons? V2468) (let V2469 (shen.lazyderef (hd V2468) V2917) (if (= where V2469) (let V2470 (shen.lazyderef (tl V2468) V2917) (if (cons? V2470) (let P (hd V2470) (let V2471 (shen.lazyderef (tl V2470) V2917) (if (cons? V2471) (let Action (hd V2471) (let V2472 (shen.lazyderef (tl V2471) V2917) (if (= () V2472) (do (shen.incinfs) (cut Throwcontrol V2917 (freeze (shen.t* (cons P (cons : (cons boolean ()))) V2916 V2917 (freeze (cut Throwcontrol V2917 (freeze (shen.t*-action Action V2915 (cons (cons P (cons : (cons verified ()))) V2916) V2917 V2918)))))))) false))) false))) false)) false)) false)) (if (= Case false) (let Case (let V2473 (shen.lazyderef V2914 V2917) (if (cons? V2473) (let V2474 (shen.lazyderef (hd V2473) V2917) (if (= shen.choicepoint! V2474) (let V2475 (shen.lazyderef (tl V2473) V2917) (if (cons? V2475) (let V2476 (shen.lazyderef (hd V2475) V2917) (if (cons? V2476) (let V2477 (shen.lazyderef (hd V2476) V2917) (if (cons? V2477) (let V2478 (shen.lazyderef (hd V2477) V2917) (if (= fail-if V2478) (let V2479 (shen.lazyderef (tl V2477) V2917) (if (cons? V2479) (let F (hd V2479) (let V2480 (shen.lazyderef (tl V2479) V2917) (if (= () V2480) (let V2481 (shen.lazyderef (tl V2476) V2917) (if (cons? V2481) (let Action (hd V2481) (let V2482 (shen.lazyderef (tl V2481) V2917) (if (= () V2482) (let V2483 (shen.lazyderef (tl V2475) V2917) (if (= () V2483) (do (shen.incinfs) (cut Throwcontrol V2917 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons F (cons Action ())) ())) (cons Action ()))) V2915 V2916 V2917 V2918)))) false)) false))) false)) false))) false)) false)) false)) false)) false)) false)) false)) (if (= Case false) (let Case (let V2484 (shen.lazyderef V2914 V2917) (if (cons? V2484) (let V2485 (shen.lazyderef (hd V2484) V2917) (if (= shen.choicepoint! V2485) (let V2486 (shen.lazyderef (tl V2484) V2917) (if (cons? V2486) (let Action (hd V2486) (let V2487 (shen.lazyderef (tl V2486) V2917) (if (= () V2487) (do (shen.incinfs) (cut Throwcontrol V2917 (freeze (shen.t*-action (cons where (cons (cons not (cons (cons (cons = (cons Action ())) (cons (cons fail ()) ())) ())) (cons Action ()))) V2915 V2916 V2917 V2918)))) false))) false)) false)) false)) (if (= Case false) (do (shen.incinfs) (shen.t* (cons V2914 (cons : (cons V2915 ()))) V2916 V2917 V2918)) Case)) Case)) Case)))))
127
128
 
128
- (defun shen.t*-rules (V2881 V2882 V2883 V2884 V2885 V2886 V2887) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2501 (shen.lazyderef V2881 V2886) (if (= () V2501) (do (shen.incinfs) (thaw V2887)) false)) (if (= Case false) (let V2502 (shen.lazyderef V2881 V2886) (if (cons? V2502) (let Rule (hd V2502) (let Rules (tl V2502) (let M (shen.newpv V2886) (do (shen.incinfs) (shen.t*-rule Rule V2882 V2883 V2884 V2885 V2886 (freeze (cut Throwcontrol V2886 (freeze (bind M (+ (shen.lazyderef V2883 V2886) 1) V2886 (freeze (shen.t*-rules Rules V2882 M V2884 V2885 V2886 V2887))))))))))) false)) Case)))))
129
+ (defun shen.t*-pattern (V2919 V2920 V2921 V2922) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Hyp (shen.newpv V2921) (do (shen.incinfs) (shen.tms->hyp (shen.ues V2919) Hyp V2921 (freeze (cut Throwcontrol V2921 (freeze (shen.t* (cons V2919 (cons : (cons V2920 ()))) Hyp V2921 V2922))))))))))
129
130
 
130
- (defun shen.t*-rule (V2888 V2889 V2890 V2891 V2892 V2893 V2894) (let Case (do (shen.incinfs) (shen.t*-ruleh V2888 V2889 V2892 V2893 V2894)) (if (= Case false) (let Error (shen.newpv V2893) (do (shen.incinfs) (bind Error (shen.type-insecure-rule-error-message (shen.lazyderef V2890 V2893) (shen.lazyderef V2891 V2893)) V2893 V2894))) Case)))
131
+ (defun shen.ues (V2927) (cond ((shen.ue? V2927) (cons V2927 ())) ((cons? V2927) (union (shen.ues (hd V2927)) (shen.ues (tl V2927)))) (true ())))
131
132
 
132
- (defun shen.t*-ruleh (V2895 V2896 V2897 V2898 V2899) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2478 (shen.lazyderef V2895 V2898) (if (cons? V2478) (let V2479 (shen.lazyderef (hd V2478) V2898) (if (= () V2479) (let V2480 (shen.lazyderef (tl V2478) V2898) (if (cons? V2480) (let Result (hd V2480) (let V2481 (shen.lazyderef (tl V2480) V2898) (if (= () V2481) (let V2482 (shen.lazyderef V2896 V2898) (if (cons? V2482) (let V2483 (shen.lazyderef (hd V2482) V2898) (if (= --> V2483) (let V2484 (shen.lazyderef (tl V2482) V2898) (if (cons? V2484) (let A (hd V2484) (let V2485 (shen.lazyderef (tl V2484) V2898) (if (= () V2485) (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (if (shen.pvar? V2485) (do (shen.bindv V2485 () V2898) (let Result (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (do (shen.unbindv V2485 V2898) Result))) false)))) (if (shen.pvar? V2484) (let A (shen.newpv V2898) (do (shen.bindv V2484 (cons A ()) V2898) (let Result (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (do (shen.unbindv V2484 V2898) Result)))) false))) (if (shen.pvar? V2483) (do (shen.bindv V2483 --> V2898) (let Result (let V2486 (shen.lazyderef (tl V2482) V2898) (if (cons? V2486) (let A (hd V2486) (let V2487 (shen.lazyderef (tl V2486) V2898) (if (= () V2487) (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (if (shen.pvar? V2487) (do (shen.bindv V2487 () V2898) (let Result (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (do (shen.unbindv V2487 V2898) Result))) false)))) (if (shen.pvar? V2486) (let A (shen.newpv V2898) (do (shen.bindv V2486 (cons A ()) V2898) (let Result (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (do (shen.unbindv V2486 V2898) Result)))) false))) (do (shen.unbindv V2483 V2898) Result))) false))) (if (shen.pvar? V2482) (let A (shen.newpv V2898) (do (shen.bindv V2482 (cons --> (cons A ())) V2898) (let Result (do (shen.incinfs) (cut Throwcontrol V2898 (freeze (shen.th* Result A V2897 V2898 V2899)))) (do (shen.unbindv V2482 V2898) Result)))) false))) false))) false)) false)) false)) (if (= Case false) (let V2488 (shen.lazyderef V2895 V2898) (if (cons? V2488) (let Patterns (hd V2488) (let V2489 (shen.lazyderef (tl V2488) V2898) (if (cons? V2489) (let Result (hd V2489) (let V2490 (shen.lazyderef (tl V2489) V2898) (if (= () V2490) (let NewHyp (shen.newpv V2898) (let B (shen.newpv V2898) (let AllHyp (shen.newpv V2898) (do (shen.incinfs) (shen.t*-patterns Patterns V2896 NewHyp B V2898 (freeze (cut Throwcontrol V2898 (freeze (shen.conc NewHyp V2897 AllHyp V2898 (freeze (cut Throwcontrol V2898 (freeze (shen.th* Result B AllHyp V2898 V2899))))))))))))) false))) false))) false)) Case)))))
133
+ (defun shen.ue? (V2928) (and (symbol? V2928) (shen.ue-h? (str V2928))))
133
134
 
134
- (defun shen.type-insecure-rule-error-message (V2900 V2901) (simple-error (cn "type error in rule " (shen.app V2900 (cn " of " (shen.app V2901 "
135
- " shen.a)) shen.a))))
135
+ (defun shen.ue-h? (V2935) (cond ((and (shen.+string? V2935) (and (= "&" (pos V2935 0)) (and (shen.+string? (tlstr V2935)) (= "&" (pos (tlstr V2935) 0))))) true) (true false)))
136
136
 
137
- (defun shen.t*-patterns (V2902 V2903 V2904 V2905 V2906 V2907) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2459 (shen.lazyderef V2902 V2906) (if (= () V2459) (let V2460 (shen.lazyderef V2904 V2906) (if (= () V2460) (do (shen.incinfs) (unify! V2905 V2903 V2906 V2907)) (if (shen.pvar? V2460) (do (shen.bindv V2460 () V2906) (let Result (do (shen.incinfs) (unify! V2905 V2903 V2906 V2907)) (do (shen.unbindv V2460 V2906) Result))) false))) false)) (if (= Case false) (let V2461 (shen.lazyderef V2902 V2906) (if (cons? V2461) (let Pattern2453 (hd V2461) (let Patterns (tl V2461) (let V2462 (shen.lazyderef V2903 V2906) (if (cons? V2462) (let A2454 (hd V2462) (let V2463 (shen.lazyderef (tl V2462) V2906) (if (cons? V2463) (let V2464 (shen.lazyderef (hd V2463) V2906) (if (= --> V2464) (let V2465 (shen.lazyderef (tl V2463) V2906) (if (cons? V2465) (let B (hd V2465) (let V2466 (shen.lazyderef (tl V2465) V2906) (if (= () V2466) (let V2467 (shen.lazyderef V2904 V2906) (if (cons? V2467) (let V2468 (shen.lazyderef (hd V2467) V2906) (if (cons? V2468) (let Pattern (hd V2468) (let V2469 (shen.lazyderef (tl V2468) V2906) (if (cons? V2469) (let V2470 (shen.lazyderef (hd V2469) V2906) (if (= : V2470) (let V2471 (shen.lazyderef (tl V2469) V2906) (if (cons? V2471) (let A (hd V2471) (let V2472 (shen.lazyderef (tl V2471) V2906) (if (= () V2472) (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (if (shen.pvar? V2472) (do (shen.bindv V2472 () V2906) (let Result (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (do (shen.unbindv V2472 V2906) Result))) false)))) (if (shen.pvar? V2471) (let A (shen.newpv V2906) (do (shen.bindv V2471 (cons A ()) V2906) (let Result (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (do (shen.unbindv V2471 V2906) Result)))) false))) (if (shen.pvar? V2470) (do (shen.bindv V2470 : V2906) (let Result (let V2473 (shen.lazyderef (tl V2469) V2906) (if (cons? V2473) (let A (hd V2473) (let V2474 (shen.lazyderef (tl V2473) V2906) (if (= () V2474) (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (if (shen.pvar? V2474) (do (shen.bindv V2474 () V2906) (let Result (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (do (shen.unbindv V2474 V2906) Result))) false)))) (if (shen.pvar? V2473) (let A (shen.newpv V2906) (do (shen.bindv V2473 (cons A ()) V2906) (let Result (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (do (shen.unbindv V2473 V2906) Result)))) false))) (do (shen.unbindv V2470 V2906) Result))) false))) (if (shen.pvar? V2469) (let A (shen.newpv V2906) (do (shen.bindv V2469 (cons : (cons A ())) V2906) (let Result (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (do (shen.unbindv V2469 V2906) Result)))) false)))) (if (shen.pvar? V2468) (let Pattern (shen.newpv V2906) (let A (shen.newpv V2906) (do (shen.bindv V2468 (cons Pattern (cons : (cons A ()))) V2906) (let Result (let Hyp (tl V2467) (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907)))))))))))))))) (do (shen.unbindv V2468 V2906) Result))))) false))) (if (shen.pvar? V2467) (let Pattern (shen.newpv V2906) (let A (shen.newpv V2906) (let Hyp (shen.newpv V2906) (do (shen.bindv V2467 (cons (cons Pattern (cons : (cons A ()))) Hyp) V2906) (let Result (let Assume (shen.newpv V2906) (do (shen.incinfs) (unify! A A2454 V2906 (freeze (unify! Pattern Pattern2453 V2906 (freeze (shen.t*-assume Pattern Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.th* Pattern A Assume V2906 (freeze (cut Throwcontrol V2906 (freeze (shen.t*-patterns Patterns B Hyp V2905 V2906 V2907))))))))))))))) (do (shen.unbindv V2467 V2906) Result)))))) false))) false))) false)) false)) false))) false)))) false)) Case)))))
137
+ (defun shen.tms->hyp (V2936 V2937 V2938 V2939) (let Case (let V2452 (shen.lazyderef V2936 V2938) (if (= () V2452) (let V2453 (shen.lazyderef V2937 V2938) (if (= () V2453) (do (shen.incinfs) (thaw V2939)) (if (shen.pvar? V2453) (do (shen.bindv V2453 () V2938) (let Result (do (shen.incinfs) (thaw V2939)) (do (shen.unbindv V2453 V2938) Result))) false))) false)) (if (= Case false) (let V2454 (shen.lazyderef V2936 V2938) (if (cons? V2454) (let Tm2449 (hd V2454) (let Tms (tl V2454) (let V2455 (shen.lazyderef V2937 V2938) (if (cons? V2455) (let V2456 (shen.lazyderef (hd V2455) V2938) (if (cons? V2456) (let Tm (hd V2456) (let V2457 (shen.lazyderef (tl V2456) V2938) (if (cons? V2457) (let V2458 (shen.lazyderef (hd V2457) V2938) (if (= : V2458) (let V2459 (shen.lazyderef (tl V2457) V2938) (if (cons? V2459) (let A (hd V2459) (let V2460 (shen.lazyderef (tl V2459) V2938) (if (= () V2460) (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (if (shen.pvar? V2460) (do (shen.bindv V2460 () V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2460 V2938) Result))) false)))) (if (shen.pvar? V2459) (let A (shen.newpv V2938) (do (shen.bindv V2459 (cons A ()) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2459 V2938) Result)))) false))) (if (shen.pvar? V2458) (do (shen.bindv V2458 : V2938) (let Result (let V2461 (shen.lazyderef (tl V2457) V2938) (if (cons? V2461) (let A (hd V2461) (let V2462 (shen.lazyderef (tl V2461) V2938) (if (= () V2462) (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (if (shen.pvar? V2462) (do (shen.bindv V2462 () V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2462 V2938) Result))) false)))) (if (shen.pvar? V2461) (let A (shen.newpv V2938) (do (shen.bindv V2461 (cons A ()) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2461 V2938) Result)))) false))) (do (shen.unbindv V2458 V2938) Result))) false))) (if (shen.pvar? V2457) (let A (shen.newpv V2938) (do (shen.bindv V2457 (cons : (cons A ())) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2457 V2938) Result)))) false)))) (if (shen.pvar? V2456) (let Tm (shen.newpv V2938) (let A (shen.newpv V2938) (do (shen.bindv V2456 (cons Tm (cons : (cons A ()))) V2938) (let Result (let Hyp (tl V2455) (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939))))) (do (shen.unbindv V2456 V2938) Result))))) false))) (if (shen.pvar? V2455) (let Tm (shen.newpv V2938) (let A (shen.newpv V2938) (let Hyp (shen.newpv V2938) (do (shen.bindv V2455 (cons (cons Tm (cons : (cons A ()))) Hyp) V2938) (let Result (do (shen.incinfs) (unify! Tm Tm2449 V2938 (freeze (shen.tms->hyp Tms Hyp V2938 V2939)))) (do (shen.unbindv V2455 V2938) Result)))))) false))))) false)) Case)))
138
138
 
139
- (defun shen.t*-assume (V2908 V2909 V2910 V2911) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2450 (shen.lazyderef V2908 V2910) (if (cons? V2450) (let X (hd V2450) (let Y (tl V2450) (let A1 (shen.newpv V2910) (let A2 (shen.newpv V2910) (do (shen.incinfs) (cut Throwcontrol V2910 (freeze (shen.t*-assume X A1 V2910 (freeze (shen.t*-assume Y A2 V2910 (freeze (bind V2909 (append (shen.lazyderef A1 V2910) (shen.lazyderef A2 V2910)) V2910 V2911)))))))))))) false)) (if (= Case false) (let Case (let A (shen.newpv V2910) (do (shen.incinfs) (fwhen (shen.placeholder? (shen.lazyderef V2908 V2910)) V2910 (freeze (bind V2909 (cons (cons (shen.lazyderef V2908 V2910) (cons : (cons (shen.lazyderef A V2910) ()))) ()) V2910 V2911))))) (if (= Case false) (let V2451 (shen.lazyderef V2909 V2910) (if (= () V2451) (do (shen.incinfs) (thaw V2911)) (if (shen.pvar? V2451) (do (shen.bindv V2451 () V2910) (let Result (do (shen.incinfs) (thaw V2911)) (do (shen.unbindv V2451 V2910) Result))) false))) Case)) Case)))))
139
+ (defun findall (V2940 V2941 V2942 V2943 V2944) (let B (shen.newpv V2943) (let A (shen.newpv V2943) (do (shen.incinfs) (bind A (gensym shen.a) V2943 (freeze (bind B (set (shen.lazyderef A V2943) ()) V2943 (freeze (shen.findallhelp V2940 V2941 V2942 A V2943 V2944)))))))))
140
140
 
141
- (defun shen.conc (V2912 V2913 V2914 V2915 V2916) (let Case (let V2446 (shen.lazyderef V2912 V2915) (if (= () V2446) (do (shen.incinfs) (bind V2914 (shen.lazyderef V2913 V2915) V2915 V2916)) false)) (if (= Case false) (let V2447 (shen.lazyderef V2912 V2915) (if (cons? V2447) (let X (hd V2447) (let Y (tl V2447) (let Z (shen.newpv V2915) (do (shen.incinfs) (bind V2914 (cons (shen.lazyderef X V2915) (shen.lazyderef Z V2915)) V2915 (freeze (shen.conc Y V2913 Z V2915 V2916))))))) false)) Case)))
141
+ (defun shen.findallhelp (V2945 V2946 V2947 V2948 V2949 V2950) (let Case (do (shen.incinfs) (call V2946 V2949 (freeze (shen.remember V2948 V2945 V2949 (freeze (fwhen false V2949 V2950)))))) (if (= Case false) (do (shen.incinfs) (bind V2947 (value (shen.lazyderef V2948 V2949)) V2949 V2950)) Case)))
142
142
 
143
- (defun shen.findallhelp (V2917 V2918 V2919 V2920 V2921 V2922) (let Case (do (shen.incinfs) (call V2918 V2921 (freeze (shen.remember V2920 V2917 V2921 (freeze (fwhen false V2921 V2922)))))) (if (= Case false) (do (shen.incinfs) (bind V2919 (value (shen.lazyderef V2920 V2921)) V2921 V2922)) Case)))
143
+ (defun shen.remember (V2951 V2952 V2953 V2954) (let B (shen.newpv V2953) (do (shen.incinfs) (bind B (set (shen.deref V2951 V2953) (cons (shen.deref V2952 V2953) (value (shen.deref V2951 V2953)))) V2953 V2954))))
144
144
 
145
- (defun shen.remember (V2923 V2924 V2925 V2926) (let B (shen.newpv V2925) (do (shen.incinfs) (bind B (set (shen.deref V2923 V2925) (cons (shen.deref V2924 V2925) (value (shen.deref V2923 V2925)))) V2925 V2926))))
145
+ (defun shen.t*-defcc (V2955 V2956 V2957 V2958 V2959) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2425 (shen.lazyderef V2955 V2958) (if (cons? V2425) (let V2426 (shen.lazyderef (hd V2425) V2958) (if (= defcc V2426) (let V2427 (shen.lazyderef (tl V2425) V2958) (if (cons? V2427) (let F (hd V2427) (let V2428 (shen.lazyderef (tl V2427) V2958) (if (cons? V2428) (let V2429 (shen.lazyderef (hd V2428) V2958) (if (= { V2429) (let V2430 (shen.lazyderef (tl V2428) V2958) (if (cons? V2430) (let V2431 (shen.lazyderef (hd V2430) V2958) (if (cons? V2431) (let V2432 (shen.lazyderef (hd V2431) V2958) (if (= list V2432) (let V2433 (shen.lazyderef (tl V2431) V2958) (if (cons? V2433) (let A (hd V2433) (let V2434 (shen.lazyderef (tl V2433) V2958) (if (= () V2434) (let V2435 (shen.lazyderef (tl V2430) V2958) (if (cons? V2435) (let V2436 (shen.lazyderef (hd V2435) V2958) (if (= ==> V2436) (let V2437 (shen.lazyderef (tl V2435) V2958) (if (cons? V2437) (let B (hd V2437) (let V2438 (shen.lazyderef (tl V2437) V2958) (if (cons? V2438) (let V2439 (shen.lazyderef (hd V2438) V2958) (if (= } V2439) (let Rest (tl V2438) (let Rest& (shen.newpv V2958) (let Rest&& (shen.newpv V2958) (let Rules (shen.newpv V2958) (let ListA&& (shen.newpv V2958) (let B&& (shen.newpv V2958) (let Sig (shen.newpv V2958) (let Declare (shen.newpv V2958) (do (shen.incinfs) (bind Sig (shen.placeholders (cons (cons list (cons (shen.lazyderef A V2958) ())) (cons ==> (cons (shen.lazyderef B V2958) ()))) (shen.extract_vars (cons (cons list (cons (shen.lazyderef A V2958) ())) (cons ==> (cons (shen.lazyderef B V2958) ()))))) V2958 (freeze (bind ListA&& (hd (shen.lazyderef Sig V2958)) V2958 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V2958)))) V2958 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V2958)) V2958 (freeze (bind Rest&& (shen.placeholders (shen.lazyderef Rest& V2958) (shen.extract_vars (shen.lazyderef Rest& V2958))) V2958 (freeze (shen.get-rules Rules Rest&& V2958 (freeze (cut Throwcontrol V2958 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V2957) 1 V2958 (freeze (unify V2956 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V2958 (freeze (bind Declare (declare (shen.lazyderef F V2958) (cons (cons list (cons (shen.lazyderef A V2958) ())) (cons ==> (cons (shen.lazyderef B V2958) ())))) V2958 V2959)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
146
146
 
147
- (defun findall (V2927 V2928 V2929 V2930 V2931) (let B (shen.newpv V2930) (let A (shen.newpv V2930) (do (shen.incinfs) (bind A (gensym shen.a) V2930 (freeze (bind B (set (shen.lazyderef A V2930) ()) V2930 (freeze (shen.findallhelp V2927 V2928 V2929 A V2930 V2931)))))))))
147
+ (defun shen.plug-wildcards (V2960) (cond ((cons? V2960) (map shen.plug-wildcards V2960)) ((= V2960 _) (gensym (intern "X"))) (true V2960)))
148
148
 
149
- (defun shen.t*-defcc (V2932 V2933 V2934 V2935 V2936) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let V2419 (shen.lazyderef V2932 V2935) (if (cons? V2419) (let V2420 (shen.lazyderef (hd V2419) V2935) (if (= defcc V2420) (let V2421 (shen.lazyderef (tl V2419) V2935) (if (cons? V2421) (let F (hd V2421) (let V2422 (shen.lazyderef (tl V2421) V2935) (if (cons? V2422) (let V2423 (shen.lazyderef (hd V2422) V2935) (if (= { V2423) (let V2424 (shen.lazyderef (tl V2422) V2935) (if (cons? V2424) (let V2425 (shen.lazyderef (hd V2424) V2935) (if (cons? V2425) (let V2426 (shen.lazyderef (hd V2425) V2935) (if (= list V2426) (let V2427 (shen.lazyderef (tl V2425) V2935) (if (cons? V2427) (let A (hd V2427) (let V2428 (shen.lazyderef (tl V2427) V2935) (if (= () V2428) (let V2429 (shen.lazyderef (tl V2424) V2935) (if (cons? V2429) (let V2430 (shen.lazyderef (hd V2429) V2935) (if (= ==> V2430) (let V2431 (shen.lazyderef (tl V2429) V2935) (if (cons? V2431) (let B (hd V2431) (let V2432 (shen.lazyderef (tl V2431) V2935) (if (cons? V2432) (let V2433 (shen.lazyderef (hd V2432) V2935) (if (= } V2433) (let Rest (tl V2432) (let Rest& (shen.newpv V2935) (let Rest&& (shen.newpv V2935) (let Rules (shen.newpv V2935) (let ListA&& (shen.newpv V2935) (let B&& (shen.newpv V2935) (let Sig (shen.newpv V2935) (let Declare (shen.newpv V2935) (do (shen.incinfs) (bind Sig (shen.placeholders (cons (cons list (cons (shen.lazyderef A V2935) ())) (cons ==> (cons (shen.lazyderef B V2935) ()))) (shen.extract_vars (cons (cons list (cons (shen.lazyderef A V2935) ())) (cons ==> (cons (shen.lazyderef B V2935) ()))))) V2935 (freeze (bind ListA&& (hd (shen.lazyderef Sig V2935)) V2935 (freeze (bind B&& (hd (tl (tl (shen.lazyderef Sig V2935)))) V2935 (freeze (bind Rest& (shen.plug-wildcards (shen.lazyderef Rest V2935)) V2935 (freeze (bind Rest&& (shen.placeholders (shen.lazyderef Rest& V2935) (shen.extract_vars (shen.lazyderef Rest& V2935))) V2935 (freeze (shen.get-rules Rules Rest&& V2935 (freeze (cut Throwcontrol V2935 (freeze (shen.tc-rules F Rules ListA&& B&& (cons (cons F (cons : (cons Sig ()))) V2934) 1 V2935 (freeze (unify V2933 (cons (cons list (cons A ())) (cons ==> (cons B ()))) V2935 (freeze (bind Declare (declare (shen.lazyderef F V2935) (cons (cons list (cons (shen.lazyderef A V2935) ())) (cons ==> (cons (shen.lazyderef B V2935) ())))) V2935 V2936)))))))))))))))))))))))))))) false)) false))) false)) false)) false)) false))) false)) false)) false)) false)) false)) false))) false)) false)) false)))))
149
+ (defun shen.get-rules (V2961 V2962 V2963 V2964) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2418 (shen.lazyderef V2961 V2963) (if (= () V2418) (let V2419 (shen.lazyderef V2962 V2963) (if (= () V2419) (do (shen.incinfs) (cut Throwcontrol V2963 V2964)) false)) (if (shen.pvar? V2418) (do (shen.bindv V2418 () V2963) (let Result (let V2420 (shen.lazyderef V2962 V2963) (if (= () V2420) (do (shen.incinfs) (cut Throwcontrol V2963 V2964)) false)) (do (shen.unbindv V2418 V2963) Result))) false))) (if (= Case false) (let V2421 (shen.lazyderef V2961 V2963) (if (cons? V2421) (let Rule (hd V2421) (let Rules (tl V2421) (let Other (shen.newpv V2963) (do (shen.incinfs) (shen.first-rule V2962 Rule Other V2963 (freeze (cut Throwcontrol V2963 (freeze (shen.get-rules Rules Other V2963 V2964))))))))) (if (shen.pvar? V2421) (let Rule (shen.newpv V2963) (let Rules (shen.newpv V2963) (do (shen.bindv V2421 (cons Rule Rules) V2963) (let Result (let Other (shen.newpv V2963) (do (shen.incinfs) (shen.first-rule V2962 Rule Other V2963 (freeze (cut Throwcontrol V2963 (freeze (shen.get-rules Rules Other V2963 V2964))))))) (do (shen.unbindv V2421 V2963) Result))))) false))) Case)))))
150
150
 
151
- (defun shen.plug-wildcards (V2937) (cond ((cons? V2937) (map shen.plug-wildcards V2937)) ((= V2937 _) (gensym (intern "X"))) (true V2937)))
151
+ (defun shen.first-rule (V2965 V2966 V2967 V2968 V2969) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2411 (shen.lazyderef V2965 V2968) (if (cons? V2411) (let V2412 (shen.lazyderef (hd V2411) V2968) (if (= ; V2412) (let Other2406 (tl V2411) (let V2413 (shen.lazyderef V2966 V2968) (if (= () V2413) (do (shen.incinfs) (unify! V2967 Other2406 V2968 (freeze (cut Throwcontrol V2968 V2969)))) (if (shen.pvar? V2413) (do (shen.bindv V2413 () V2968) (let Result (do (shen.incinfs) (unify! V2967 Other2406 V2968 (freeze (cut Throwcontrol V2968 V2969)))) (do (shen.unbindv V2413 V2968) Result))) false)))) false)) false)) (if (= Case false) (let V2414 (shen.lazyderef V2965 V2968) (if (cons? V2414) (let X2407 (hd V2414) (let Rest (tl V2414) (let V2415 (shen.lazyderef V2966 V2968) (if (cons? V2415) (let X (hd V2415) (let Rule (tl V2415) (do (shen.incinfs) (unify! X X2407 V2968 (freeze (shen.first-rule Rest Rule V2967 V2968 V2969)))))) (if (shen.pvar? V2415) (let X (shen.newpv V2968) (let Rule (shen.newpv V2968) (do (shen.bindv V2415 (cons X Rule) V2968) (let Result (do (shen.incinfs) (unify! X X2407 V2968 (freeze (shen.first-rule Rest Rule V2967 V2968 V2969)))) (do (shen.unbindv V2415 V2968) Result))))) false))))) false)) Case)))))
152
152
 
153
- (defun shen.get-rules (V2938 V2939 V2940 V2941) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2412 (shen.lazyderef V2938 V2940) (if (= () V2412) (let V2413 (shen.lazyderef V2939 V2940) (if (= () V2413) (do (shen.incinfs) (cut Throwcontrol V2940 V2941)) false)) (if (shen.pvar? V2412) (do (shen.bindv V2412 () V2940) (let Result (let V2414 (shen.lazyderef V2939 V2940) (if (= () V2414) (do (shen.incinfs) (cut Throwcontrol V2940 V2941)) false)) (do (shen.unbindv V2412 V2940) Result))) false))) (if (= Case false) (let V2415 (shen.lazyderef V2938 V2940) (if (cons? V2415) (let Rule (hd V2415) (let Rules (tl V2415) (let Other (shen.newpv V2940) (do (shen.incinfs) (shen.first-rule V2939 Rule Other V2940 (freeze (cut Throwcontrol V2940 (freeze (shen.get-rules Rules Other V2940 V2941))))))))) (if (shen.pvar? V2415) (let Rule (shen.newpv V2940) (let Rules (shen.newpv V2940) (do (shen.bindv V2415 (cons Rule Rules) V2940) (let Result (let Other (shen.newpv V2940) (do (shen.incinfs) (shen.first-rule V2939 Rule Other V2940 (freeze (cut Throwcontrol V2940 (freeze (shen.get-rules Rules Other V2940 V2941))))))) (do (shen.unbindv V2415 V2940) Result))))) false))) Case)))))
153
+ (defun shen.tc-rules (V2970 V2971 V2972 V2973 V2974 V2975 V2976 V2977) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2400 (shen.lazyderef V2971 V2976) (if (= () V2400) (do (shen.incinfs) (thaw V2977)) false)) (if (= Case false) (let V2401 (shen.lazyderef V2971 V2976) (if (cons? V2401) (let Rule (hd V2401) (let Rules (tl V2401) (let V2402 (shen.lazyderef V2972 V2976) (if (cons? V2402) (let V2403 (shen.lazyderef (hd V2402) V2976) (if (= list V2403) (let V2404 (shen.lazyderef (tl V2402) V2976) (if (cons? V2404) (let A (hd V2404) (let V2405 (shen.lazyderef (tl V2404) V2976) (if (= () V2405) (let M (shen.newpv V2976) (do (shen.incinfs) (shen.tc-rule V2970 Rule A V2973 V2974 V2975 V2976 (freeze (bind M (+ (shen.deref V2975 V2976) 1) V2976 (freeze (cut Throwcontrol V2976 (freeze (shen.tc-rules V2970 Rules (cons list (cons A ())) V2973 V2974 M V2976 V2977))))))))) false))) false)) false)) false)))) false)) Case)))))
154
154
 
155
- (defun shen.first-rule (V2942 V2943 V2944 V2945 V2946) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2405 (shen.lazyderef V2942 V2945) (if (cons? V2405) (let V2406 (shen.lazyderef (hd V2405) V2945) (if (= ; V2406) (let Other2400 (tl V2405) (let V2407 (shen.lazyderef V2943 V2945) (if (= () V2407) (do (shen.incinfs) (unify! V2944 Other2400 V2945 (freeze (cut Throwcontrol V2945 V2946)))) (if (shen.pvar? V2407) (do (shen.bindv V2407 () V2945) (let Result (do (shen.incinfs) (unify! V2944 Other2400 V2945 (freeze (cut Throwcontrol V2945 V2946)))) (do (shen.unbindv V2407 V2945) Result))) false)))) false)) false)) (if (= Case false) (let V2408 (shen.lazyderef V2942 V2945) (if (cons? V2408) (let X2401 (hd V2408) (let Rest (tl V2408) (let V2409 (shen.lazyderef V2943 V2945) (if (cons? V2409) (let X (hd V2409) (let Rule (tl V2409) (do (shen.incinfs) (unify! X X2401 V2945 (freeze (shen.first-rule Rest Rule V2944 V2945 V2946)))))) (if (shen.pvar? V2409) (let X (shen.newpv V2945) (let Rule (shen.newpv V2945) (do (shen.bindv V2409 (cons X Rule) V2945) (let Result (do (shen.incinfs) (unify! X X2401 V2945 (freeze (shen.first-rule Rest Rule V2944 V2945 V2946)))) (do (shen.unbindv V2409 V2945) Result))))) false))))) false)) Case)))))
155
+ (defun shen.tc-rule (V2978 V2979 V2980 V2981 V2982 V2983 V2984 V2985) (let Case (do (shen.incinfs) (shen.check-defcc-rule V2979 V2980 V2981 V2982 V2984 V2985)) (if (= Case false) (let Err (shen.newpv V2984) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2983 V2984) (cn " of " (shen.app (shen.lazyderef V2978 V2984) "" shen.a)) shen.a))) V2984 V2985))) Case)))
156
156
 
157
- (defun shen.tc-rules (V2947 V2948 V2949 V2950 V2951 V2952 V2953 V2954) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2394 (shen.lazyderef V2948 V2953) (if (= () V2394) (do (shen.incinfs) (thaw V2954)) false)) (if (= Case false) (let V2395 (shen.lazyderef V2948 V2953) (if (cons? V2395) (let Rule (hd V2395) (let Rules (tl V2395) (let V2396 (shen.lazyderef V2949 V2953) (if (cons? V2396) (let V2397 (shen.lazyderef (hd V2396) V2953) (if (= list V2397) (let V2398 (shen.lazyderef (tl V2396) V2953) (if (cons? V2398) (let A (hd V2398) (let V2399 (shen.lazyderef (tl V2398) V2953) (if (= () V2399) (let M (shen.newpv V2953) (do (shen.incinfs) (shen.tc-rule V2947 Rule A V2950 V2951 V2952 V2953 (freeze (bind M (+ (shen.deref V2952 V2953) 1) V2953 (freeze (cut Throwcontrol V2953 (freeze (shen.tc-rules V2947 Rules (cons list (cons A ())) V2950 V2951 M V2953 V2954))))))))) false))) false)) false)) false)))) false)) Case)))))
157
+ (defun shen.check-defcc-rule (V2986 V2987 V2988 V2989 V2990 V2991) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V2990) (let Semantics (shen.newpv V2990) (let SynHyps (shen.newpv V2990) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V2986 V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.syntax-hyps Syntax V2989 SynHyps V2987 V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.syntax-check Syntax V2987 SynHyps V2990 (freeze (cut Throwcontrol V2990 (freeze (shen.semantics-check Semantics V2988 SynHyps V2990 V2991))))))))))))))))))))
158
158
 
159
- (defun shen.tc-rule (V2955 V2956 V2957 V2958 V2959 V2960 V2961 V2962) (let Case (do (shen.incinfs) (shen.check-defcc-rule V2956 V2957 V2958 V2959 V2961 V2962)) (if (= Case false) (let Err (shen.newpv V2961) (do (shen.incinfs) (bind Err (simple-error (cn "type error in rule " (shen.app (shen.lazyderef V2960 V2961) (cn " of " (shen.app (shen.lazyderef V2955 V2961) "" shen.a)) shen.a))) V2961 V2962))) Case)))
159
+ (defun shen.syntax-hyps (V2992 V2993 V2994 V2995 V2996 V2997) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2371 (shen.lazyderef V2992 V2996) (if (= () V2371) (do (shen.incinfs) (unify! V2994 V2993 V2996 V2997)) false)) (if (= Case false) (let Case (let V2372 (shen.lazyderef V2992 V2996) (if (cons? V2372) (let V2373 (shen.lazyderef (hd V2372) V2996) (if (cons? V2373) (let X (hd V2373) (let Y (tl V2373) (let Z (tl V2372) (let W (shen.newpv V2996) (do (shen.incinfs) (cut Throwcontrol V2996 (freeze (shen.conc (cons X Y) Z W V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps W V2993 V2994 V2995 V2996 V2997)))))))))))) false)) false)) (if (= Case false) (let Case (let V2374 (shen.lazyderef V2992 V2996) (if (cons? V2374) (let X2365 (hd V2374) (let Y (tl V2374) (let V2375 (shen.lazyderef V2994 V2996) (if (cons? V2375) (let V2376 (shen.lazyderef (hd V2375) V2996) (if (cons? V2376) (let X (hd V2376) (let V2377 (shen.lazyderef (tl V2376) V2996) (if (cons? V2377) (let V2378 (shen.lazyderef (hd V2377) V2996) (if (= : V2378) (let V2379 (shen.lazyderef (tl V2377) V2996) (if (cons? V2379) (let A2366 (hd V2379) (let V2380 (shen.lazyderef (tl V2379) V2996) (if (= () V2380) (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (if (shen.pvar? V2380) (do (shen.bindv V2380 () V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2380 V2996) Result))) false)))) (if (shen.pvar? V2379) (let A2366 (shen.newpv V2996) (do (shen.bindv V2379 (cons A2366 ()) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2379 V2996) Result)))) false))) (if (shen.pvar? V2378) (do (shen.bindv V2378 : V2996) (let Result (let V2381 (shen.lazyderef (tl V2377) V2996) (if (cons? V2381) (let A2366 (hd V2381) (let V2382 (shen.lazyderef (tl V2381) V2996) (if (= () V2382) (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (if (shen.pvar? V2382) (do (shen.bindv V2382 () V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2382 V2996) Result))) false)))) (if (shen.pvar? V2381) (let A2366 (shen.newpv V2996) (do (shen.bindv V2381 (cons A2366 ()) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2381 V2996) Result)))) false))) (do (shen.unbindv V2378 V2996) Result))) false))) (if (shen.pvar? V2377) (let A2366 (shen.newpv V2996) (do (shen.bindv V2377 (cons : (cons A2366 ())) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2377 V2996) Result)))) false)))) (if (shen.pvar? V2376) (let X (shen.newpv V2996) (let A2366 (shen.newpv V2996) (do (shen.bindv V2376 (cons X (cons : (cons A2366 ()))) V2996) (let Result (let SynHyps (tl V2375) (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997))))))))))) (do (shen.unbindv V2376 V2996) Result))))) false))) (if (shen.pvar? V2375) (let X (shen.newpv V2996) (let A2366 (shen.newpv V2996) (let SynHyps (shen.newpv V2996) (do (shen.bindv V2375 (cons (cons X (cons : (cons A2366 ()))) SynHyps) V2996) (let Result (do (shen.incinfs) (unify! V2995 A2366 V2996 (freeze (unify! X X2365 V2996 (freeze (fwhen (shen.placeholder? (shen.deref X V2996)) V2996 (freeze (cut Throwcontrol V2996 (freeze (shen.syntax-hyps Y V2993 SynHyps V2995 V2996 V2997)))))))))) (do (shen.unbindv V2375 V2996) Result)))))) false))))) false)) (if (= Case false) (let V2383 (shen.lazyderef V2992 V2996) (if (cons? V2383) (let Y (tl V2383) (do (shen.incinfs) (shen.syntax-hyps Y V2993 V2994 V2995 V2996 V2997))) false)) Case)) Case)) Case)))))
160
160
 
161
- (defun shen.check-defcc-rule (V2963 V2964 V2965 V2966 V2967 V2968) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Syntax (shen.newpv V2967) (let Semantics (shen.newpv V2967) (let SynHyps (shen.newpv V2967) (do (shen.incinfs) (shen.get-syntax+semantics Syntax Semantics V2963 V2967 (freeze (cut Throwcontrol V2967 (freeze (shen.syntax-hyps Syntax V2966 SynHyps V2964 V2967 (freeze (cut Throwcontrol V2967 (freeze (shen.syntax-check Syntax V2964 SynHyps V2967 (freeze (cut Throwcontrol V2967 (freeze (shen.semantics-check Semantics V2965 SynHyps V2967 V2968))))))))))))))))))))
161
+ (defun shen.get-syntax+semantics (V2998 V2999 V3000 V3001 V3002) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2337 (shen.lazyderef V2998 V3001) (if (= () V2337) (let V2338 (shen.lazyderef V3000 V3001) (if (cons? V2338) (let V2339 (shen.lazyderef (hd V2338) V3001) (if (= := V2339) (let V2340 (shen.lazyderef (tl V2338) V3001) (if (cons? V2340) (let Semantics (hd V2340) (let V2341 (shen.lazyderef (tl V2340) V3001) (if (= () V2341) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (shen.lazyderef Semantics V3001) V3001 V3002)))) false))) false)) false)) false)) (if (shen.pvar? V2337) (do (shen.bindv V2337 () V3001) (let Result (let V2342 (shen.lazyderef V3000 V3001) (if (cons? V2342) (let V2343 (shen.lazyderef (hd V2342) V3001) (if (= := V2343) (let V2344 (shen.lazyderef (tl V2342) V3001) (if (cons? V2344) (let Semantics (hd V2344) (let V2345 (shen.lazyderef (tl V2344) V3001) (if (= () V2345) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (shen.lazyderef Semantics V3001) V3001 V3002)))) false))) false)) false)) false)) (do (shen.unbindv V2337 V3001) Result))) false))) (if (= Case false) (let Case (let V2346 (shen.lazyderef V2998 V3001) (if (= () V2346) (let V2347 (shen.lazyderef V3000 V3001) (if (cons? V2347) (let V2348 (shen.lazyderef (hd V2347) V3001) (if (= := V2348) (let V2349 (shen.lazyderef (tl V2347) V3001) (if (cons? V2349) (let Semantics (hd V2349) (let V2350 (shen.lazyderef (tl V2349) V3001) (if (cons? V2350) (let V2351 (shen.lazyderef (hd V2350) V3001) (if (= where V2351) (let V2352 (shen.lazyderef (tl V2350) V3001) (if (cons? V2352) (let G (hd V2352) (let V2353 (shen.lazyderef (tl V2352) V3001) (if (= () V2353) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (cons where (cons (shen.lazyderef G V3001) (cons (shen.lazyderef Semantics V3001) ()))) V3001 V3002)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2346) (do (shen.bindv V2346 () V3001) (let Result (let V2354 (shen.lazyderef V3000 V3001) (if (cons? V2354) (let V2355 (shen.lazyderef (hd V2354) V3001) (if (= := V2355) (let V2356 (shen.lazyderef (tl V2354) V3001) (if (cons? V2356) (let Semantics (hd V2356) (let V2357 (shen.lazyderef (tl V2356) V3001) (if (cons? V2357) (let V2358 (shen.lazyderef (hd V2357) V3001) (if (= where V2358) (let V2359 (shen.lazyderef (tl V2357) V3001) (if (cons? V2359) (let G (hd V2359) (let V2360 (shen.lazyderef (tl V2359) V3001) (if (= () V2360) (do (shen.incinfs) (cut Throwcontrol V3001 (freeze (bind V2999 (cons where (cons (shen.lazyderef G V3001) (cons (shen.lazyderef Semantics V3001) ()))) V3001 V3002)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2346 V3001) Result))) false))) (if (= Case false) (let V2361 (shen.lazyderef V2998 V3001) (if (cons? V2361) (let X2333 (hd V2361) (let Syntax (tl V2361) (let V2362 (shen.lazyderef V3000 V3001) (if (cons? V2362) (let X (hd V2362) (let Rule (tl V2362) (do (shen.incinfs) (unify! X X2333 V3001 (freeze (shen.get-syntax+semantics Syntax V2999 Rule V3001 V3002)))))) false)))) (if (shen.pvar? V2361) (let X2333 (shen.newpv V3001) (let Syntax (shen.newpv V3001) (do (shen.bindv V2361 (cons X2333 Syntax) V3001) (let Result (let V2363 (shen.lazyderef V3000 V3001) (if (cons? V2363) (let X (hd V2363) (let Rule (tl V2363) (do (shen.incinfs) (unify! X X2333 V3001 (freeze (shen.get-syntax+semantics Syntax V2999 Rule V3001 V3002)))))) false)) (do (shen.unbindv V2361 V3001) Result))))) false))) Case)) Case)))))
162
162
 
163
- (defun shen.syntax-hyps (V2969 V2970 V2971 V2972 V2973 V2974) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2365 (shen.lazyderef V2969 V2973) (if (= () V2365) (do (shen.incinfs) (unify! V2971 V2970 V2973 V2974)) false)) (if (= Case false) (let Case (let V2366 (shen.lazyderef V2969 V2973) (if (cons? V2366) (let V2367 (shen.lazyderef (hd V2366) V2973) (if (cons? V2367) (let X (hd V2367) (let Y (tl V2367) (let Z (tl V2366) (let W (shen.newpv V2973) (do (shen.incinfs) (cut Throwcontrol V2973 (freeze (shen.conc (cons X Y) Z W V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps W V2970 V2971 V2972 V2973 V2974)))))))))))) false)) false)) (if (= Case false) (let Case (let V2368 (shen.lazyderef V2969 V2973) (if (cons? V2368) (let X2359 (hd V2368) (let Y (tl V2368) (let V2369 (shen.lazyderef V2971 V2973) (if (cons? V2369) (let V2370 (shen.lazyderef (hd V2369) V2973) (if (cons? V2370) (let X (hd V2370) (let V2371 (shen.lazyderef (tl V2370) V2973) (if (cons? V2371) (let V2372 (shen.lazyderef (hd V2371) V2973) (if (= : V2372) (let V2373 (shen.lazyderef (tl V2371) V2973) (if (cons? V2373) (let A2360 (hd V2373) (let V2374 (shen.lazyderef (tl V2373) V2973) (if (= () V2374) (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (if (shen.pvar? V2374) (do (shen.bindv V2374 () V2973) (let Result (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (do (shen.unbindv V2374 V2973) Result))) false)))) (if (shen.pvar? V2373) (let A2360 (shen.newpv V2973) (do (shen.bindv V2373 (cons A2360 ()) V2973) (let Result (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (do (shen.unbindv V2373 V2973) Result)))) false))) (if (shen.pvar? V2372) (do (shen.bindv V2372 : V2973) (let Result (let V2375 (shen.lazyderef (tl V2371) V2973) (if (cons? V2375) (let A2360 (hd V2375) (let V2376 (shen.lazyderef (tl V2375) V2973) (if (= () V2376) (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (if (shen.pvar? V2376) (do (shen.bindv V2376 () V2973) (let Result (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (do (shen.unbindv V2376 V2973) Result))) false)))) (if (shen.pvar? V2375) (let A2360 (shen.newpv V2973) (do (shen.bindv V2375 (cons A2360 ()) V2973) (let Result (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (do (shen.unbindv V2375 V2973) Result)))) false))) (do (shen.unbindv V2372 V2973) Result))) false))) (if (shen.pvar? V2371) (let A2360 (shen.newpv V2973) (do (shen.bindv V2371 (cons : (cons A2360 ())) V2973) (let Result (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (do (shen.unbindv V2371 V2973) Result)))) false)))) (if (shen.pvar? V2370) (let X (shen.newpv V2973) (let A2360 (shen.newpv V2973) (do (shen.bindv V2370 (cons X (cons : (cons A2360 ()))) V2973) (let Result (let SynHyps (tl V2369) (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974))))))))))) (do (shen.unbindv V2370 V2973) Result))))) false))) (if (shen.pvar? V2369) (let X (shen.newpv V2973) (let A2360 (shen.newpv V2973) (let SynHyps (shen.newpv V2973) (do (shen.bindv V2369 (cons (cons X (cons : (cons A2360 ()))) SynHyps) V2973) (let Result (do (shen.incinfs) (unify! V2972 A2360 V2973 (freeze (unify! X X2359 V2973 (freeze (fwhen (shen.placeholder? (shen.deref X V2973)) V2973 (freeze (cut Throwcontrol V2973 (freeze (shen.syntax-hyps Y V2970 SynHyps V2972 V2973 V2974)))))))))) (do (shen.unbindv V2369 V2973) Result)))))) false))))) false)) (if (= Case false) (let V2377 (shen.lazyderef V2969 V2973) (if (cons? V2377) (let Y (tl V2377) (do (shen.incinfs) (shen.syntax-hyps Y V2970 V2971 V2972 V2973 V2974))) false)) Case)) Case)) Case)))))
163
+ (defun shen.syntax-check (V3003 V3004 V3005 V3006 V3007) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2330 (shen.lazyderef V3003 V3006) (if (= () V2330) (do (shen.incinfs) (thaw V3007)) false)) (if (= Case false) (let Case (let V2331 (shen.lazyderef V3003 V3006) (if (cons? V2331) (let X (hd V2331) (let Syntax (tl V2331) (let C (shen.newpv V3006) (let X&& (shen.newpv V3006) (let B (shen.newpv V3006) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V3006)) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V3005 V3006 (freeze (cut Throwcontrol V3006 (freeze (bind X&& (concat && (shen.lazyderef X V3006)) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V3004 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V3005) V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.syntax-check Syntax V3004 V3005 V3006 V3007))))))))))))))))))))))) false)) (if (= Case false) (let V2332 (shen.lazyderef V3003 V3006) (if (cons? V2332) (let X (hd V2332) (let Syntax (tl V2332) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V3004 ()))) V3005 V3006 (freeze (cut Throwcontrol V3006 (freeze (shen.syntax-check Syntax V3004 V3005 V3006 V3007)))))))) false)) Case)) Case)))))
164
164
 
165
- (defun shen.get-syntax+semantics (V2975 V2976 V2977 V2978 V2979) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2331 (shen.lazyderef V2975 V2978) (if (= () V2331) (let V2332 (shen.lazyderef V2977 V2978) (if (cons? V2332) (let V2333 (shen.lazyderef (hd V2332) V2978) (if (= := V2333) (let V2334 (shen.lazyderef (tl V2332) V2978) (if (cons? V2334) (let Semantics (hd V2334) (let V2335 (shen.lazyderef (tl V2334) V2978) (if (= () V2335) (do (shen.incinfs) (cut Throwcontrol V2978 (freeze (bind V2976 (shen.lazyderef Semantics V2978) V2978 V2979)))) false))) false)) false)) false)) (if (shen.pvar? V2331) (do (shen.bindv V2331 () V2978) (let Result (let V2336 (shen.lazyderef V2977 V2978) (if (cons? V2336) (let V2337 (shen.lazyderef (hd V2336) V2978) (if (= := V2337) (let V2338 (shen.lazyderef (tl V2336) V2978) (if (cons? V2338) (let Semantics (hd V2338) (let V2339 (shen.lazyderef (tl V2338) V2978) (if (= () V2339) (do (shen.incinfs) (cut Throwcontrol V2978 (freeze (bind V2976 (shen.lazyderef Semantics V2978) V2978 V2979)))) false))) false)) false)) false)) (do (shen.unbindv V2331 V2978) Result))) false))) (if (= Case false) (let Case (let V2340 (shen.lazyderef V2975 V2978) (if (= () V2340) (let V2341 (shen.lazyderef V2977 V2978) (if (cons? V2341) (let V2342 (shen.lazyderef (hd V2341) V2978) (if (= := V2342) (let V2343 (shen.lazyderef (tl V2341) V2978) (if (cons? V2343) (let Semantics (hd V2343) (let V2344 (shen.lazyderef (tl V2343) V2978) (if (cons? V2344) (let V2345 (shen.lazyderef (hd V2344) V2978) (if (= where V2345) (let V2346 (shen.lazyderef (tl V2344) V2978) (if (cons? V2346) (let G (hd V2346) (let V2347 (shen.lazyderef (tl V2346) V2978) (if (= () V2347) (do (shen.incinfs) (cut Throwcontrol V2978 (freeze (bind V2976 (cons where (cons (shen.lazyderef G V2978) (cons (shen.lazyderef Semantics V2978) ()))) V2978 V2979)))) false))) false)) false)) false))) false)) false)) false)) (if (shen.pvar? V2340) (do (shen.bindv V2340 () V2978) (let Result (let V2348 (shen.lazyderef V2977 V2978) (if (cons? V2348) (let V2349 (shen.lazyderef (hd V2348) V2978) (if (= := V2349) (let V2350 (shen.lazyderef (tl V2348) V2978) (if (cons? V2350) (let Semantics (hd V2350) (let V2351 (shen.lazyderef (tl V2350) V2978) (if (cons? V2351) (let V2352 (shen.lazyderef (hd V2351) V2978) (if (= where V2352) (let V2353 (shen.lazyderef (tl V2351) V2978) (if (cons? V2353) (let G (hd V2353) (let V2354 (shen.lazyderef (tl V2353) V2978) (if (= () V2354) (do (shen.incinfs) (cut Throwcontrol V2978 (freeze (bind V2976 (cons where (cons (shen.lazyderef G V2978) (cons (shen.lazyderef Semantics V2978) ()))) V2978 V2979)))) false))) false)) false)) false))) false)) false)) false)) (do (shen.unbindv V2340 V2978) Result))) false))) (if (= Case false) (let V2355 (shen.lazyderef V2975 V2978) (if (cons? V2355) (let X2327 (hd V2355) (let Syntax (tl V2355) (let V2356 (shen.lazyderef V2977 V2978) (if (cons? V2356) (let X (hd V2356) (let Rule (tl V2356) (do (shen.incinfs) (unify! X X2327 V2978 (freeze (shen.get-syntax+semantics Syntax V2976 Rule V2978 V2979)))))) false)))) (if (shen.pvar? V2355) (let X2327 (shen.newpv V2978) (let Syntax (shen.newpv V2978) (do (shen.bindv V2355 (cons X2327 Syntax) V2978) (let Result (let V2357 (shen.lazyderef V2977 V2978) (if (cons? V2357) (let X (hd V2357) (let Rule (tl V2357) (do (shen.incinfs) (unify! X X2327 V2978 (freeze (shen.get-syntax+semantics Syntax V2976 Rule V2978 V2979)))))) false)) (do (shen.unbindv V2355 V2978) Result))))) false))) Case)) Case)))))
165
+ (defun shen.semantics-check (V3008 V3009 V3010 V3011 V3012) (let Semantics* (shen.newpv V3011) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V3008 V3011))) V3011 (freeze (shen.t* (cons Semantics* (cons : (cons V3009 ()))) V3010 V3011 V3012))))))
166
166
 
167
- (defun shen.syntax-check (V2980 V2981 V2982 V2983 V2984) (let Throwcontrol (shen.catchpoint) (shen.cutpoint Throwcontrol (let Case (let V2324 (shen.lazyderef V2980 V2983) (if (= () V2324) (do (shen.incinfs) (thaw V2984)) false)) (if (= Case false) (let Case (let V2325 (shen.lazyderef V2980 V2983) (if (cons? V2325) (let X (hd V2325) (let Syntax (tl V2325) (let C (shen.newpv V2983) (let X&& (shen.newpv V2983) (let B (shen.newpv V2983) (do (shen.incinfs) (fwhen (shen.grammar_symbol? (shen.lazyderef X V2983)) V2983 (freeze (cut Throwcontrol V2983 (freeze (shen.t* (cons X (cons : (cons (cons (cons list (cons B ())) (cons ==> (cons C ()))) ()))) V2982 V2983 (freeze (cut Throwcontrol V2983 (freeze (bind X&& (concat && (shen.lazyderef X V2983)) V2983 (freeze (cut Throwcontrol V2983 (freeze (shen.t* (cons X&& (cons : (cons (cons list (cons V2981 ())) ()))) (cons (cons X&& (cons : (cons (cons list (cons B ())) ()))) V2982) V2983 (freeze (cut Throwcontrol V2983 (freeze (shen.syntax-check Syntax V2981 V2982 V2983 V2984))))))))))))))))))))))) false)) (if (= Case false) (let V2326 (shen.lazyderef V2980 V2983) (if (cons? V2326) (let X (hd V2326) (let Syntax (tl V2326) (do (shen.incinfs) (shen.t* (cons X (cons : (cons V2981 ()))) V2982 V2983 (freeze (cut Throwcontrol V2983 (freeze (shen.syntax-check Syntax V2981 V2982 V2983 V2984)))))))) false)) Case)) Case)))))
168
-
169
- (defun shen.semantics-check (V2985 V2986 V2987 V2988 V2989) (let Semantics* (shen.newpv V2988) (do (shen.incinfs) (bind Semantics* (shen.curry (shen.rename-semantics (shen.deref V2985 V2988))) V2988 (freeze (shen.t* (cons Semantics* (cons : (cons V2986 ()))) V2987 V2988 V2989))))))
170
-
171
- (defun shen.rename-semantics (V2990) (cond ((cons? V2990) (cons (shen.rename-semantics (hd V2990)) (shen.rename-semantics (tl V2990)))) ((shen.grammar_symbol? V2990) (cons shen.<-sem (cons V2990 ()))) (true V2990)))
167
+ (defun shen.rename-semantics (V3013) (cond ((cons? V3013) (cons (shen.rename-semantics (hd V3013)) (shen.rename-semantics (tl V3013)))) ((shen.grammar_symbol? V3013) (cons shen.<-sem (cons V3013 ()))) (true V3013)))
172
168
 
173
169
 
174
170