shen-ruby 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +4 -0
- data/README.md +4 -4
- data/lib/shen_ruby/version.rb +1 -1
- data/shen/release/k_lambda/core.kl +63 -63
- data/shen/release/k_lambda/declarations.kl +59 -10
- data/shen/release/k_lambda/load.kl +15 -15
- data/shen/release/k_lambda/macros.kl +31 -29
- data/shen/release/k_lambda/prolog.kl +97 -97
- data/shen/release/k_lambda/reader.kl +79 -79
- data/shen/release/k_lambda/sequent.kl +60 -54
- data/shen/release/k_lambda/sys.kl +98 -98
- data/shen/release/k_lambda/t-star.kl +47 -47
- data/shen/release/k_lambda/toplevel.kl +21 -21
- data/shen/release/k_lambda/track.kl +25 -25
- data/shen/release/k_lambda/types.kl +4 -8
- data/shen/release/k_lambda/writer.kl +25 -25
- data/shen/release/k_lambda/yacc.kl +32 -26
- data/shen-ruby.gemspec +1 -1
- metadata +3 -3
@@ -47,114 +47,120 @@
|
|
47
47
|
* explains this license in full. *
|
48
48
|
* *
|
49
49
|
*****************************************************************************************
|
50
|
-
"(defun shen.datatype-error (
|
50
|
+
"(defun shen.datatype-error (V1679) (cond ((and (cons? V1679) (and (cons? (tl V1679)) (= () (tl (tl V1679))))) (simple-error (cn "datatype syntax error here:
|
51
51
|
|
52
|
-
" (shen.app (shen.next-50 50 (hd
|
52
|
+
" (shen.app (shen.next-50 50 (hd V1679)) "
|
53
53
|
" shen.a)))) (true (shen.sys-error shen.datatype-error))))
|
54
54
|
|
55
|
-
(defun shen.<datatype-rules> (
|
55
|
+
(defun shen.<datatype-rules> (V1684) (let Result (let Parse_shen.<datatype-rule> (shen.<datatype-rule> V1684) (if (not (= (fail) Parse_shen.<datatype-rule>)) (let Parse_shen.<datatype-rules> (shen.<datatype-rules> Parse_shen.<datatype-rule>) (if (not (= (fail) Parse_shen.<datatype-rules>)) (shen.pair (hd Parse_shen.<datatype-rules>) (cons (shen.hdtl Parse_shen.<datatype-rule>) (shen.hdtl Parse_shen.<datatype-rules>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V1684) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) ()) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
|
56
56
|
|
57
|
-
(defun shen.<datatype-rule> (
|
57
|
+
(defun shen.<datatype-rule> (V1689) (let Result (let Parse_shen.<side-conditions> (shen.<side-conditions> V1689) (if (not (= (fail) Parse_shen.<side-conditions>)) (let Parse_shen.<premises> (shen.<premises> Parse_shen.<side-conditions>) (if (not (= (fail) Parse_shen.<premises>)) (let Parse_shen.<singleunderline> (shen.<singleunderline> Parse_shen.<premises>) (if (not (= (fail) Parse_shen.<singleunderline>)) (let Parse_shen.<conclusion> (shen.<conclusion> Parse_shen.<singleunderline>) (if (not (= (fail) Parse_shen.<conclusion>)) (shen.pair (hd Parse_shen.<conclusion>) (shen.sequent shen.single (cons (shen.hdtl Parse_shen.<side-conditions>) (cons (shen.hdtl Parse_shen.<premises>) (cons (shen.hdtl Parse_shen.<conclusion>) ()))))) (fail))) (fail))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_shen.<side-conditions> (shen.<side-conditions> V1689) (if (not (= (fail) Parse_shen.<side-conditions>)) (let Parse_shen.<premises> (shen.<premises> Parse_shen.<side-conditions>) (if (not (= (fail) Parse_shen.<premises>)) (let Parse_shen.<doubleunderline> (shen.<doubleunderline> Parse_shen.<premises>) (if (not (= (fail) Parse_shen.<doubleunderline>)) (let Parse_shen.<conclusion> (shen.<conclusion> Parse_shen.<doubleunderline>) (if (not (= (fail) Parse_shen.<conclusion>)) (shen.pair (hd Parse_shen.<conclusion>) (shen.sequent shen.double (cons (shen.hdtl Parse_shen.<side-conditions>) (cons (shen.hdtl Parse_shen.<premises>) (cons (shen.hdtl Parse_shen.<conclusion>) ()))))) (fail))) (fail))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
|
58
58
|
|
59
|
-
(defun shen.<side-conditions> (
|
59
|
+
(defun shen.<side-conditions> (V1694) (let Result (let Parse_shen.<side-condition> (shen.<side-condition> V1694) (if (not (= (fail) Parse_shen.<side-condition>)) (let Parse_shen.<side-conditions> (shen.<side-conditions> Parse_shen.<side-condition>) (if (not (= (fail) Parse_shen.<side-conditions>)) (shen.pair (hd Parse_shen.<side-conditions>) (cons (shen.hdtl Parse_shen.<side-condition>) (shen.hdtl Parse_shen.<side-conditions>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V1694) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) ()) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
|
60
60
|
|
61
|
-
(defun shen.<side-condition> (
|
61
|
+
(defun shen.<side-condition> (V1699) (let Result (if (and (cons? (hd V1699)) (= if (hd (hd V1699)))) (let Parse_shen.<expr> (shen.<expr> (shen.pair (tl (hd V1699)) (shen.hdtl V1699))) (if (not (= (fail) Parse_shen.<expr>)) (shen.pair (hd Parse_shen.<expr>) (cons if (cons (shen.hdtl Parse_shen.<expr>) ()))) (fail))) (fail)) (if (= Result (fail)) (let Result (if (and (cons? (hd V1699)) (= let (hd (hd V1699)))) (let Parse_shen.<variable?> (shen.<variable?> (shen.pair (tl (hd V1699)) (shen.hdtl V1699))) (if (not (= (fail) Parse_shen.<variable?>)) (let Parse_shen.<expr> (shen.<expr> Parse_shen.<variable?>) (if (not (= (fail) Parse_shen.<expr>)) (shen.pair (hd Parse_shen.<expr>) (cons let (cons (shen.hdtl Parse_shen.<variable?>) (cons (shen.hdtl Parse_shen.<expr>) ())))) (fail))) (fail))) (fail)) (if (= Result (fail)) (fail) Result)) Result)))
|
62
62
|
|
63
|
-
(defun shen.<variable?> (
|
63
|
+
(defun shen.<variable?> (V1704) (let Result (if (cons? (hd V1704)) (let Parse_X (hd (hd V1704)) (if (variable? Parse_X) (shen.pair (hd (shen.pair (tl (hd V1704)) (shen.hdtl V1704))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
|
64
64
|
|
65
|
-
(defun shen.<expr> (
|
65
|
+
(defun shen.<expr> (V1709) (let Result (if (cons? (hd V1709)) (let Parse_X (hd (hd V1709)) (if (not (or (element? Parse_X (cons >> (cons ; ()))) (or (shen.singleunderline? Parse_X) (shen.doubleunderline? Parse_X)))) (shen.pair (hd (shen.pair (tl (hd V1709)) (shen.hdtl V1709))) (shen.remove-bar Parse_X)) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
|
66
66
|
|
67
|
-
(defun shen.remove-bar (
|
67
|
+
(defun shen.remove-bar (V1710) (cond ((and (cons? V1710) (and (cons? (tl V1710)) (and (cons? (tl (tl V1710))) (and (= () (tl (tl (tl V1710)))) (= (hd (tl V1710)) bar!))))) (cons (hd V1710) (hd (tl (tl V1710))))) ((cons? V1710) (cons (shen.remove-bar (hd V1710)) (shen.remove-bar (tl V1710)))) (true V1710)))
|
68
68
|
|
69
|
-
(defun shen.<premises> (
|
69
|
+
(defun shen.<premises> (V1715) (let Result (let Parse_shen.<premise> (shen.<premise> V1715) (if (not (= (fail) Parse_shen.<premise>)) (let Parse_shen.<semicolon-symbol> (shen.<semicolon-symbol> Parse_shen.<premise>) (if (not (= (fail) Parse_shen.<semicolon-symbol>)) (let Parse_shen.<premises> (shen.<premises> Parse_shen.<semicolon-symbol>) (if (not (= (fail) Parse_shen.<premises>)) (shen.pair (hd Parse_shen.<premises>) (cons (shen.hdtl Parse_shen.<premise>) (shen.hdtl Parse_shen.<premises>))) (fail))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V1715) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) ()) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
|
70
70
|
|
71
|
-
(defun shen.<semicolon-symbol> (
|
71
|
+
(defun shen.<semicolon-symbol> (V1720) (let Result (if (cons? (hd V1720)) (let Parse_X (hd (hd V1720)) (if (= Parse_X ;) (shen.pair (hd (shen.pair (tl (hd V1720)) (shen.hdtl V1720))) shen.skip) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
|
72
72
|
|
73
|
-
(defun shen.<premise> (
|
73
|
+
(defun shen.<premise> (V1725) (let Result (if (and (cons? (hd V1725)) (= ! (hd (hd V1725)))) (shen.pair (hd (shen.pair (tl (hd V1725)) (shen.hdtl V1725))) !) (fail)) (if (= Result (fail)) (let Result (let Parse_shen.<formulae> (shen.<formulae> V1725) (if (not (= (fail) Parse_shen.<formulae>)) (if (and (cons? (hd Parse_shen.<formulae>)) (= >> (hd (hd Parse_shen.<formulae>)))) (let Parse_shen.<formula> (shen.<formula> (shen.pair (tl (hd Parse_shen.<formulae>)) (shen.hdtl Parse_shen.<formulae>))) (if (not (= (fail) Parse_shen.<formula>)) (shen.pair (hd Parse_shen.<formula>) (shen.sequent (shen.hdtl Parse_shen.<formulae>) (shen.hdtl Parse_shen.<formula>))) (fail))) (fail)) (fail))) (if (= Result (fail)) (let Result (let Parse_shen.<formula> (shen.<formula> V1725) (if (not (= (fail) Parse_shen.<formula>)) (shen.pair (hd Parse_shen.<formula>) (shen.sequent () (shen.hdtl Parse_shen.<formula>))) (fail))) (if (= Result (fail)) (fail) Result)) Result)) Result)))
|
74
74
|
|
75
|
-
(defun shen.<conclusion> (
|
75
|
+
(defun shen.<conclusion> (V1730) (let Result (let Parse_shen.<formulae> (shen.<formulae> V1730) (if (not (= (fail) Parse_shen.<formulae>)) (if (and (cons? (hd Parse_shen.<formulae>)) (= >> (hd (hd Parse_shen.<formulae>)))) (let Parse_shen.<formula> (shen.<formula> (shen.pair (tl (hd Parse_shen.<formulae>)) (shen.hdtl Parse_shen.<formulae>))) (if (not (= (fail) Parse_shen.<formula>)) (let Parse_shen.<semicolon-symbol> (shen.<semicolon-symbol> Parse_shen.<formula>) (if (not (= (fail) Parse_shen.<semicolon-symbol>)) (shen.pair (hd Parse_shen.<semicolon-symbol>) (shen.sequent (shen.hdtl Parse_shen.<formulae>) (shen.hdtl Parse_shen.<formula>))) (fail))) (fail))) (fail)) (fail))) (if (= Result (fail)) (let Result (let Parse_shen.<formula> (shen.<formula> V1730) (if (not (= (fail) Parse_shen.<formula>)) (let Parse_shen.<semicolon-symbol> (shen.<semicolon-symbol> Parse_shen.<formula>) (if (not (= (fail) Parse_shen.<semicolon-symbol>)) (shen.pair (hd Parse_shen.<semicolon-symbol>) (shen.sequent () (shen.hdtl Parse_shen.<formula>))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
|
76
76
|
|
77
|
-
(defun shen.sequent (
|
77
|
+
(defun shen.sequent (V1731 V1732) (@p V1731 V1732))
|
78
78
|
|
79
|
-
(defun shen.<formulae> (
|
79
|
+
(defun shen.<formulae> (V1737) (let Result (let Parse_shen.<formula> (shen.<formula> V1737) (if (not (= (fail) Parse_shen.<formula>)) (let Parse_shen.<comma-symbol> (shen.<comma-symbol> Parse_shen.<formula>) (if (not (= (fail) Parse_shen.<comma-symbol>)) (let Parse_shen.<formulae> (shen.<formulae> Parse_shen.<comma-symbol>) (if (not (= (fail) Parse_shen.<formulae>)) (shen.pair (hd Parse_shen.<formulae>) (cons (shen.hdtl Parse_shen.<formula>) (shen.hdtl Parse_shen.<formulae>))) (fail))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_shen.<formula> (shen.<formula> V1737) (if (not (= (fail) Parse_shen.<formula>)) (shen.pair (hd Parse_shen.<formula>) (cons (shen.hdtl Parse_shen.<formula>) ())) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V1737) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) ()) (fail))) (if (= Result (fail)) (fail) Result)) Result)) Result)))
|
80
80
|
|
81
|
-
(defun shen.<comma-symbol> (
|
81
|
+
(defun shen.<comma-symbol> (V1742) (let Result (if (cons? (hd V1742)) (let Parse_X (hd (hd V1742)) (if (= Parse_X (intern ",")) (shen.pair (hd (shen.pair (tl (hd V1742)) (shen.hdtl V1742))) shen.skip) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
|
82
82
|
|
83
|
-
(defun shen.<formula> (
|
83
|
+
(defun shen.<formula> (V1747) (let Result (let Parse_shen.<expr> (shen.<expr> V1747) (if (not (= (fail) Parse_shen.<expr>)) (if (and (cons? (hd Parse_shen.<expr>)) (= : (hd (hd Parse_shen.<expr>)))) (let Parse_shen.<type> (shen.<type> (shen.pair (tl (hd Parse_shen.<expr>)) (shen.hdtl Parse_shen.<expr>))) (if (not (= (fail) Parse_shen.<type>)) (shen.pair (hd Parse_shen.<type>) (cons (shen.curry (shen.hdtl Parse_shen.<expr>)) (cons : (cons (shen.demodulate (shen.hdtl Parse_shen.<type>)) ())))) (fail))) (fail)) (fail))) (if (= Result (fail)) (let Result (let Parse_shen.<expr> (shen.<expr> V1747) (if (not (= (fail) Parse_shen.<expr>)) (shen.pair (hd Parse_shen.<expr>) (shen.hdtl Parse_shen.<expr>)) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
|
84
84
|
|
85
|
-
(defun shen.<type> (
|
85
|
+
(defun shen.<type> (V1752) (let Result (let Parse_shen.<expr> (shen.<expr> V1752) (if (not (= (fail) Parse_shen.<expr>)) (shen.pair (hd Parse_shen.<expr>) (shen.curry-type (shen.hdtl Parse_shen.<expr>))) (fail))) (if (= Result (fail)) (fail) Result)))
|
86
86
|
|
87
|
-
(defun shen.<doubleunderline> (
|
87
|
+
(defun shen.<doubleunderline> (V1757) (let Result (if (cons? (hd V1757)) (let Parse_X (hd (hd V1757)) (if (shen.doubleunderline? Parse_X) (shen.pair (hd (shen.pair (tl (hd V1757)) (shen.hdtl V1757))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
|
88
88
|
|
89
|
-
(defun shen.<singleunderline> (
|
89
|
+
(defun shen.<singleunderline> (V1762) (let Result (if (cons? (hd V1762)) (let Parse_X (hd (hd V1762)) (if (shen.singleunderline? Parse_X) (shen.pair (hd (shen.pair (tl (hd V1762)) (shen.hdtl V1762))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
|
90
90
|
|
91
|
-
(defun shen.singleunderline? (
|
91
|
+
(defun shen.singleunderline? (V1763) (and (symbol? V1763) (shen.sh? (str V1763))))
|
92
92
|
|
93
|
-
(defun shen.sh? (
|
93
|
+
(defun shen.sh? (V1764) (cond ((= "_" V1764) true) (true (and (= (pos V1764 0) "_") (shen.sh? (tlstr V1764))))))
|
94
94
|
|
95
|
-
(defun shen.doubleunderline? (
|
95
|
+
(defun shen.doubleunderline? (V1765) (and (symbol? V1765) (shen.dh? (str V1765))))
|
96
96
|
|
97
|
-
(defun shen.dh? (
|
97
|
+
(defun shen.dh? (V1766) (cond ((= "=" V1766) true) (true (and (= (pos V1766 0) "=") (shen.dh? (tlstr V1766))))))
|
98
98
|
|
99
|
-
(defun shen.process-datatype (
|
99
|
+
(defun shen.process-datatype (V1767 V1768) (shen.remember-datatype (shen.s-prolog (shen.rules->horn-clauses V1767 V1768))))
|
100
100
|
|
101
|
-
(defun shen.remember-datatype (
|
101
|
+
(defun shen.remember-datatype (V1773) (cond ((cons? V1773) (do (set shen.*datatypes* (adjoin (hd V1773) (value shen.*datatypes*))) (do (set shen.*alldatatypes* (adjoin (hd V1773) (value shen.*alldatatypes*))) (hd V1773)))) (true (shen.sys-error shen.remember-datatype))))
|
102
102
|
|
103
|
-
(defun shen.rules->horn-clauses (
|
103
|
+
(defun shen.rules->horn-clauses (V1776 V1777) (cond ((= () V1777) ()) ((and (cons? V1777) (and (tuple? (hd V1777)) (= shen.single (fst (hd V1777))))) (cons (shen.rule->horn-clause V1776 (snd (hd V1777))) (shen.rules->horn-clauses V1776 (tl V1777)))) ((and (cons? V1777) (and (tuple? (hd V1777)) (= shen.double (fst (hd V1777))))) (shen.rules->horn-clauses V1776 (append (shen.double->singles (snd (hd V1777))) (tl V1777)))) (true (shen.sys-error shen.rules->horn-clauses))))
|
104
104
|
|
105
|
-
(defun shen.double->singles (
|
105
|
+
(defun shen.double->singles (V1778) (cons (shen.right-rule V1778) (cons (shen.left-rule V1778) ())))
|
106
106
|
|
107
|
-
(defun shen.right-rule (
|
107
|
+
(defun shen.right-rule (V1779) (@p shen.single V1779))
|
108
108
|
|
109
|
-
(defun shen.left-rule (
|
109
|
+
(defun shen.left-rule (V1780) (cond ((and (cons? V1780) (and (cons? (tl V1780)) (and (cons? (tl (tl V1780))) (and (tuple? (hd (tl (tl V1780)))) (and (= () (fst (hd (tl (tl V1780))))) (= () (tl (tl (tl V1780))))))))) (let Q (gensym Qv) (let NewConclusion (@p (cons (snd (hd (tl (tl V1780)))) ()) Q) (let NewPremises (cons (@p (map (lambda X1668 (shen.right->left X1668)) (hd (tl V1780))) Q) ()) (@p shen.single (cons (hd V1780) (cons NewPremises (cons NewConclusion ())))))))) (true (shen.sys-error shen.left-rule))))
|
110
110
|
|
111
|
-
(defun shen.right->left (
|
111
|
+
(defun shen.right->left (V1785) (cond ((and (tuple? V1785) (= () (fst V1785))) (snd V1785)) (true (simple-error "syntax error with ==========
|
112
112
|
"))))
|
113
113
|
|
114
|
-
(defun shen.rule->horn-clause (
|
114
|
+
(defun shen.rule->horn-clause (V1786 V1787) (cond ((and (cons? V1787) (and (cons? (tl V1787)) (and (cons? (tl (tl V1787))) (and (tuple? (hd (tl (tl V1787)))) (= () (tl (tl (tl V1787)))))))) (cons (shen.rule->horn-clause-head V1786 (snd (hd (tl (tl V1787))))) (cons :- (cons (shen.rule->horn-clause-body (hd V1787) (hd (tl V1787)) (fst (hd (tl (tl V1787))))) ())))) (true (shen.sys-error shen.rule->horn-clause))))
|
115
115
|
|
116
|
-
(defun shen.rule->horn-clause-head (
|
116
|
+
(defun shen.rule->horn-clause-head (V1788 V1789) (cons V1788 (cons (shen.mode-ify V1789) (cons Context_1957 ()))))
|
117
117
|
|
118
|
-
(defun shen.mode-ify (
|
118
|
+
(defun shen.mode-ify (V1790) (cond ((and (cons? V1790) (and (cons? (tl V1790)) (and (= : (hd (tl V1790))) (and (cons? (tl (tl V1790))) (= () (tl (tl (tl V1790)))))))) (cons mode (cons (cons (hd V1790) (cons : (cons (cons mode (cons (hd (tl (tl V1790))) (cons + ()))) ()))) (cons - ())))) (true V1790)))
|
119
119
|
|
120
|
-
(defun shen.rule->horn-clause-body (
|
120
|
+
(defun shen.rule->horn-clause-body (V1791 V1792 V1793) (let Variables (map (lambda X1669 (shen.extract_vars X1669)) V1793) (let Predicates (map (lambda X (gensym shen.cl)) V1793) (let SearchLiterals (shen.construct-search-literals Predicates Variables Context_1957 Context1_1957) (let SearchClauses (shen.construct-search-clauses Predicates V1793 Variables) (let SideLiterals (shen.construct-side-literals V1791) (let PremissLiterals (map (lambda X (shen.construct-premiss-literal X (empty? V1793))) V1792) (append SearchLiterals (append SideLiterals PremissLiterals)))))))))
|
121
121
|
|
122
|
-
(defun shen.construct-search-literals (
|
122
|
+
(defun shen.construct-search-literals (V1798 V1799 V1800 V1801) (cond ((and (= () V1798) (= () V1799)) ()) (true (shen.csl-help V1798 V1799 V1800 V1801))))
|
123
123
|
|
124
|
-
(defun shen.csl-help (
|
124
|
+
(defun shen.csl-help (V1804 V1805 V1806 V1807) (cond ((and (= () V1804) (= () V1805)) (cons (cons bind (cons ContextOut_1957 (cons V1806 ()))) ())) ((and (cons? V1804) (cons? V1805)) (cons (cons (hd V1804) (cons V1806 (cons V1807 (hd V1805)))) (shen.csl-help (tl V1804) (tl V1805) V1807 (gensym Context)))) (true (shen.sys-error shen.csl-help))))
|
125
125
|
|
126
|
-
(defun shen.construct-search-clauses (
|
126
|
+
(defun shen.construct-search-clauses (V1808 V1809 V1810) (cond ((and (= () V1808) (and (= () V1809) (= () V1810))) shen.skip) ((and (cons? V1808) (and (cons? V1809) (cons? V1810))) (do (shen.construct-search-clause (hd V1808) (hd V1809) (hd V1810)) (shen.construct-search-clauses (tl V1808) (tl V1809) (tl V1810)))) (true (shen.sys-error shen.construct-search-clauses))))
|
127
127
|
|
128
|
-
(defun shen.construct-search-clause (
|
128
|
+
(defun shen.construct-search-clause (V1811 V1812 V1813) (shen.s-prolog (cons (shen.construct-base-search-clause V1811 V1812 V1813) (cons (shen.construct-recursive-search-clause V1811 V1812 V1813) ()))))
|
129
129
|
|
130
|
-
(defun shen.construct-base-search-clause (
|
130
|
+
(defun shen.construct-base-search-clause (V1814 V1815 V1816) (cons (cons V1814 (cons (cons (shen.mode-ify V1815) In_1957) (cons In_1957 V1816))) (cons :- (cons () ()))))
|
131
131
|
|
132
|
-
(defun shen.construct-recursive-search-clause (
|
132
|
+
(defun shen.construct-recursive-search-clause (V1817 V1818 V1819) (cons (cons V1817 (cons (cons Assumption_1957 Assumptions_1957) (cons (cons Assumption_1957 Out_1957) V1819))) (cons :- (cons (cons (cons V1817 (cons Assumptions_1957 (cons Out_1957 V1819))) ()) ()))))
|
133
133
|
|
134
|
-
(defun shen.construct-side-literals (
|
134
|
+
(defun shen.construct-side-literals (V1824) (cond ((= () V1824) ()) ((and (cons? V1824) (and (cons? (hd V1824)) (and (= if (hd (hd V1824))) (and (cons? (tl (hd V1824))) (= () (tl (tl (hd V1824)))))))) (cons (cons when (tl (hd V1824))) (shen.construct-side-literals (tl V1824)))) ((and (cons? V1824) (and (cons? (hd V1824)) (and (= let (hd (hd V1824))) (and (cons? (tl (hd V1824))) (and (cons? (tl (tl (hd V1824)))) (= () (tl (tl (tl (hd V1824)))))))))) (cons (cons is (tl (hd V1824))) (shen.construct-side-literals (tl V1824)))) ((cons? V1824) (shen.construct-side-literals (tl V1824))) (true (shen.sys-error shen.construct-side-literals))))
|
135
135
|
|
136
|
-
(defun shen.construct-premiss-literal (
|
136
|
+
(defun shen.construct-premiss-literal (V1829 V1830) (cond ((tuple? V1829) (cons shen.t* (cons (shen.recursive_cons_form (snd V1829)) (cons (shen.construct-context V1830 (fst V1829)) ())))) ((= ! V1829) (cons cut (cons Throwcontrol ()))) (true (shen.sys-error shen.construct-premiss-literal))))
|
137
137
|
|
138
|
-
(defun shen.construct-context (
|
138
|
+
(defun shen.construct-context (V1831 V1832) (cond ((and (= true V1831) (= () V1832)) Context_1957) ((and (= false V1831) (= () V1832)) ContextOut_1957) ((cons? V1832) (cons cons (cons (shen.recursive_cons_form (hd V1832)) (cons (shen.construct-context V1831 (tl V1832)) ())))) (true (shen.sys-error shen.construct-context))))
|
139
139
|
|
140
|
-
(defun shen.recursive_cons_form (
|
140
|
+
(defun shen.recursive_cons_form (V1833) (cond ((cons? V1833) (cons cons (cons (shen.recursive_cons_form (hd V1833)) (cons (shen.recursive_cons_form (tl V1833)) ())))) (true V1833)))
|
141
141
|
|
142
|
-
(defun preclude (
|
142
|
+
(defun preclude (V1834) (shen.preclude-h (map (lambda X1670 (shen.intern-type X1670)) V1834)))
|
143
143
|
|
144
|
-
(defun shen.preclude-h (
|
144
|
+
(defun shen.preclude-h (V1835) (let FilterDatatypes (set shen.*datatypes* (difference (value shen.*datatypes*) V1835)) (value shen.*datatypes*)))
|
145
145
|
|
146
|
-
(defun include (
|
146
|
+
(defun include (V1836) (shen.include-h (map (lambda X1671 (shen.intern-type X1671)) V1836)))
|
147
147
|
|
148
|
-
(defun shen.include-h (
|
148
|
+
(defun shen.include-h (V1837) (let ValidTypes (intersection V1837 (value shen.*alldatatypes*)) (let NewDatatypes (set shen.*datatypes* (union ValidTypes (value shen.*datatypes*))) (value shen.*datatypes*))))
|
149
149
|
|
150
|
-
(defun preclude-all-but (
|
150
|
+
(defun preclude-all-but (V1838) (shen.preclude-h (difference (value shen.*alldatatypes*) (map (lambda X1672 (shen.intern-type X1672)) V1838))))
|
151
151
|
|
152
|
-
(defun include-all-but (
|
152
|
+
(defun include-all-but (V1839) (shen.include-h (difference (value shen.*alldatatypes*) (map (lambda X1673 (shen.intern-type X1673)) V1839))))
|
153
153
|
|
154
|
-
(defun shen.synonyms-help (
|
155
|
-
"
|
154
|
+
(defun shen.synonyms-help (V1844) (cond ((= () V1844) (shen.demodulation-function (value shen.*tc*) (mapcan (lambda X1674 (shen.demod-rule X1674)) (value shen.*synonyms*)))) ((and (cons? V1844) (cons? (tl V1844))) (do (shen.pushnew (cons (hd V1844) (cons (hd (tl V1844)) ())) shen.*synonyms*) (shen.synonyms-help (tl (tl V1844))))) (true (simple-error "odd number of synonyms
|
155
|
+
"))))
|
156
|
+
|
157
|
+
(defun shen.pushnew (V1845 V1846) (if (element? V1845 (value V1846)) (value V1846) (set V1846 (cons V1845 (value V1846)))))
|
158
|
+
|
159
|
+
(defun shen.demod-rule (V1847) (cond ((and (cons? V1847) (and (cons? (tl V1847)) (= () (tl (tl V1847))))) (cons (shen.rcons_form (hd V1847)) (cons -> (cons (shen.rcons_form (hd (tl V1847))) ())))) (true (shen.sys-error shen.demod-rule))))
|
160
|
+
|
161
|
+
(defun shen.demodulation-function (V1848 V1849) (do (tc -) (do (eval (cons define (cons shen.demod (append V1849 (shen.default-rule))))) (do (if V1848 (tc +) shen.skip) synonyms))))
|
156
162
|
|
157
|
-
(defun shen.
|
163
|
+
(defun shen.default-rule () (cons X (cons -> (cons X ()))))
|
158
164
|
|
159
165
|
|
160
166
|
|
@@ -47,210 +47,210 @@
|
|
47
47
|
* explains this license in full. *
|
48
48
|
* *
|
49
49
|
*****************************************************************************************
|
50
|
-
"(defun thaw (
|
50
|
+
"(defun thaw (V1855) (V1855))
|
51
51
|
|
52
|
-
(defun eval (
|
52
|
+
(defun eval (V1856) (let Macroexpand (shen.walk (lambda X1850 (macroexpand X1850)) V1856) (if (shen.packaged? Macroexpand) (map (lambda X1851 (shen.eval-without-macros X1851)) (shen.package-contents Macroexpand)) (shen.eval-without-macros Macroexpand))))
|
53
53
|
|
54
|
-
(defun shen.eval-without-macros (
|
54
|
+
(defun shen.eval-without-macros (V1857) (eval-kl (shen.elim-def (shen.proc-input+ V1857))))
|
55
55
|
|
56
|
-
(defun shen.proc-input+ (
|
56
|
+
(defun shen.proc-input+ (V1858) (cond ((and (cons? V1858) (and (= input+ (hd V1858)) (and (cons? (tl V1858)) (and (cons? (tl (tl V1858))) (= () (tl (tl (tl V1858)))))))) (cons input+ (cons (shen.rcons_form (hd (tl V1858))) (tl (tl V1858))))) ((and (cons? V1858) (and (= read+ (hd V1858)) (and (cons? (tl V1858)) (and (cons? (tl (tl V1858))) (= () (tl (tl (tl V1858)))))))) (cons read+ (cons (shen.rcons_form (hd (tl V1858))) (tl (tl V1858))))) ((cons? V1858) (map (lambda X1852 (shen.proc-input+ X1852)) V1858)) (true V1858)))
|
57
57
|
|
58
|
-
(defun shen.elim-def (
|
58
|
+
(defun shen.elim-def (V1859) (cond ((and (cons? V1859) (and (= define (hd V1859)) (cons? (tl V1859)))) (shen.shen->kl (hd (tl V1859)) (tl (tl V1859)))) ((and (cons? V1859) (and (= defmacro (hd V1859)) (cons? (tl V1859)))) (let Default (cons X (cons -> (cons X ()))) (let Def (shen.elim-def (cons define (cons (hd (tl V1859)) (append (tl (tl V1859)) Default)))) (let MacroAdd (shen.add-macro (hd (tl V1859))) Def)))) ((and (cons? V1859) (and (= defcc (hd V1859)) (cons? (tl V1859)))) (shen.elim-def (shen.yacc V1859))) ((cons? V1859) (map (lambda X1853 (shen.elim-def X1853)) V1859)) (true V1859)))
|
59
59
|
|
60
|
-
(defun shen.add-macro (
|
60
|
+
(defun shen.add-macro (V1860) (set *macros* (adjoin V1860 (value *macros*))))
|
61
61
|
|
62
|
-
(defun shen.packaged? (
|
62
|
+
(defun shen.packaged? (V1867) (cond ((and (cons? V1867) (and (= package (hd V1867)) (and (cons? (tl V1867)) (cons? (tl (tl V1867)))))) true) (true false)))
|
63
63
|
|
64
|
-
(defun external (
|
64
|
+
(defun external (V1868) (trap-error (get V1868 shen.external-symbols (value *property-vector*)) (lambda E (simple-error (cn "package " (shen.app V1868 " has not been used.
|
65
65
|
" shen.a))))))
|
66
66
|
|
67
|
-
(defun shen.package-contents (
|
67
|
+
(defun shen.package-contents (V1871) (cond ((and (cons? V1871) (and (= package (hd V1871)) (and (cons? (tl V1871)) (and (= null (hd (tl V1871))) (cons? (tl (tl V1871))))))) (tl (tl (tl V1871)))) ((and (cons? V1871) (and (= package (hd V1871)) (and (cons? (tl V1871)) (cons? (tl (tl V1871)))))) (shen.packageh (hd (tl V1871)) (hd (tl (tl V1871))) (tl (tl (tl V1871))))) (true (shen.sys-error shen.package-contents))))
|
68
68
|
|
69
|
-
(defun shen.walk (
|
69
|
+
(defun shen.walk (V1872 V1873) (cond ((cons? V1873) (V1872 (map (lambda Z (shen.walk V1872 Z)) V1873))) (true (V1872 V1873))))
|
70
70
|
|
71
|
-
(defun compile (
|
71
|
+
(defun compile (V1874 V1875 V1876) (let O (V1874 (cons V1875 (cons () ()))) (if (or (= (fail) O) (not (empty? (hd O)))) (V1876 O) (shen.hdtl O))))
|
72
72
|
|
73
|
-
(defun fail-if (
|
73
|
+
(defun fail-if (V1877 V1878) (if (V1877 V1878) (fail) V1878))
|
74
74
|
|
75
|
-
(defun @s (
|
75
|
+
(defun @s (V1879 V1880) (cn V1879 V1880))
|
76
76
|
|
77
77
|
(defun tc? () (value shen.*tc*))
|
78
78
|
|
79
|
-
(defun ps (
|
79
|
+
(defun ps (V1881) (trap-error (get V1881 shen.source (value *property-vector*)) (lambda E (simple-error (shen.app V1881 " not found.
|
80
80
|
" shen.a)))))
|
81
81
|
|
82
82
|
(defun stinput () (value *stinput*))
|
83
83
|
|
84
|
-
(defun shen.+vector? (
|
84
|
+
(defun shen.+vector? (V1882) (and (absvector? V1882) (> (<-address V1882 0) 0)))
|
85
85
|
|
86
|
-
(defun vector (
|
86
|
+
(defun vector (V1883) (let Vector (absvector (+ V1883 1)) (let ZeroStamp (address-> Vector 0 V1883) (let Standard (if (= V1883 0) ZeroStamp (shen.fillvector ZeroStamp 1 V1883 (fail))) Standard))))
|
87
87
|
|
88
|
-
(defun shen.fillvector (
|
88
|
+
(defun shen.fillvector (V1884 V1885 V1886 V1887) (cond ((= V1886 V1885) (address-> V1884 V1886 V1887)) (true (shen.fillvector (address-> V1884 V1885 V1887) (+ 1 V1885) V1886 V1887))))
|
89
89
|
|
90
|
-
(defun vector? (
|
90
|
+
(defun vector? (V1889) (and (absvector? V1889) (trap-error (>= (<-address V1889 0) 0) (lambda E false))))
|
91
91
|
|
92
|
-
(defun vector-> (
|
93
|
-
") (address->
|
92
|
+
(defun vector-> (V1890 V1891 V1892) (if (= V1891 0) (simple-error "cannot access 0th element of a vector
|
93
|
+
") (address-> V1890 V1891 V1892)))
|
94
94
|
|
95
|
-
(defun <-vector (
|
96
|
-
") (let VectorElement (<-address
|
95
|
+
(defun <-vector (V1893 V1894) (if (= V1894 0) (simple-error "cannot access 0th element of a vector
|
96
|
+
") (let VectorElement (<-address V1893 V1894) (if (= VectorElement (fail)) (simple-error "vector element not found
|
97
97
|
") VectorElement))))
|
98
98
|
|
99
|
-
(defun shen.posint? (
|
99
|
+
(defun shen.posint? (V1895) (and (integer? V1895) (>= V1895 0)))
|
100
100
|
|
101
|
-
(defun limit (
|
101
|
+
(defun limit (V1896) (<-address V1896 0))
|
102
102
|
|
103
|
-
(defun symbol? (
|
103
|
+
(defun symbol? (V1897) (cond ((or (boolean? V1897) (or (number? V1897) (string? V1897))) false) (true (trap-error (let String (str V1897) (shen.analyse-symbol? String)) (lambda E false)))))
|
104
104
|
|
105
|
-
(defun shen.analyse-symbol? (
|
105
|
+
(defun shen.analyse-symbol? (V1898) (cond ((shen.+string? V1898) (and (shen.alpha? (pos V1898 0)) (shen.alphanums? (tlstr V1898)))) (true (shen.sys-error shen.analyse-symbol?))))
|
106
106
|
|
107
|
-
(defun shen.alpha? (
|
107
|
+
(defun shen.alpha? (V1899) (element? V1899 (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 "." ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
|
108
108
|
|
109
|
-
(defun shen.alphanums? (
|
109
|
+
(defun shen.alphanums? (V1900) (cond ((= "" V1900) true) ((shen.+string? V1900) (and (shen.alphanum? (pos V1900 0)) (shen.alphanums? (tlstr V1900)))) (true (shen.sys-error shen.alphanums?))))
|
110
110
|
|
111
|
-
(defun shen.alphanum? (
|
111
|
+
(defun shen.alphanum? (V1901) (or (shen.alpha? V1901) (shen.digit? V1901)))
|
112
112
|
|
113
|
-
(defun shen.digit? (
|
113
|
+
(defun shen.digit? (V1902) (element? V1902 (cons "1" (cons "2" (cons "3" (cons "4" (cons "5" (cons "6" (cons "7" (cons "8" (cons "9" (cons "0" ()))))))))))))
|
114
114
|
|
115
|
-
(defun variable? (
|
115
|
+
(defun variable? (V1903) (cond ((or (boolean? V1903) (or (number? V1903) (string? V1903))) false) (true (trap-error (let String (str V1903) (shen.analyse-variable? String)) (lambda E false)))))
|
116
116
|
|
117
|
-
(defun shen.analyse-variable? (
|
117
|
+
(defun shen.analyse-variable? (V1904) (cond ((shen.+string? V1904) (and (shen.uppercase? (pos V1904 0)) (shen.alphanums? (tlstr V1904)))) (true (shen.sys-error shen.analyse-variable?))))
|
118
118
|
|
119
|
-
(defun shen.uppercase? (
|
119
|
+
(defun shen.uppercase? (V1905) (element? V1905 (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" ()))))))))))))))))))))))))))))
|
120
120
|
|
121
|
-
(defun gensym (
|
121
|
+
(defun gensym (V1906) (concat V1906 (set shen.*gensym* (+ 1 (value shen.*gensym*)))))
|
122
122
|
|
123
|
-
(defun concat (
|
123
|
+
(defun concat (V1907 V1908) (intern (cn (str V1907) (str V1908))))
|
124
124
|
|
125
|
-
(defun @p (
|
125
|
+
(defun @p (V1909 V1910) (let Vector (absvector 3) (let Tag (address-> Vector 0 shen.tuple) (let Fst (address-> Vector 1 V1909) (let Snd (address-> Vector 2 V1910) Vector)))))
|
126
126
|
|
127
|
-
(defun fst (
|
127
|
+
(defun fst (V1911) (<-address V1911 1))
|
128
128
|
|
129
|
-
(defun snd (
|
129
|
+
(defun snd (V1912) (<-address V1912 2))
|
130
130
|
|
131
|
-
(defun tuple? (
|
131
|
+
(defun tuple? (V1913) (trap-error (and (absvector? V1913) (= shen.tuple (<-address V1913 0))) (lambda E false)))
|
132
132
|
|
133
|
-
(defun append (
|
133
|
+
(defun append (V1914 V1915) (cond ((= () V1914) V1915) ((cons? V1914) (cons (hd V1914) (append (tl V1914) V1915))) (true (shen.sys-error append))))
|
134
134
|
|
135
|
-
(defun @v (
|
135
|
+
(defun @v (V1916 V1917) (let Limit (limit V1917) (let NewVector (vector (+ Limit 1)) (let X+NewVector (vector-> NewVector 1 V1916) (if (= Limit 0) X+NewVector (shen.@v-help V1917 1 Limit X+NewVector))))))
|
136
136
|
|
137
|
-
(defun shen.@v-help (
|
137
|
+
(defun shen.@v-help (V1918 V1919 V1920 V1921) (cond ((= V1920 V1919) (shen.copyfromvector V1918 V1921 V1920 (+ V1920 1))) (true (shen.@v-help V1918 (+ V1919 1) V1920 (shen.copyfromvector V1918 V1921 V1919 (+ V1919 1))))))
|
138
138
|
|
139
|
-
(defun shen.copyfromvector (
|
139
|
+
(defun shen.copyfromvector (V1923 V1924 V1925 V1926) (trap-error (vector-> V1924 V1926 (<-vector V1923 V1925)) (lambda E V1924)))
|
140
140
|
|
141
|
-
(defun hdv (
|
141
|
+
(defun hdv (V1927) (trap-error (<-vector V1927 1) (lambda E (simple-error (cn "hdv needs a non-empty vector as an argument; not " (shen.app V1927 "
|
142
142
|
" shen.s))))))
|
143
143
|
|
144
|
-
(defun tlv (
|
145
|
-
") (if (= Limit 1) (vector 0) (let NewVector (vector (- Limit 1)) (shen.tlv-help
|
144
|
+
(defun tlv (V1928) (let Limit (limit V1928) (if (= Limit 0) (simple-error "cannot take the tail of the empty vector
|
145
|
+
") (if (= Limit 1) (vector 0) (let NewVector (vector (- Limit 1)) (shen.tlv-help V1928 2 Limit (vector (- Limit 1))))))))
|
146
146
|
|
147
|
-
(defun shen.tlv-help (
|
147
|
+
(defun shen.tlv-help (V1929 V1930 V1931 V1932) (cond ((= V1931 V1930) (shen.copyfromvector V1929 V1932 V1931 (- V1931 1))) (true (shen.tlv-help V1929 (+ V1930 1) V1931 (shen.copyfromvector V1929 V1932 V1930 (- V1930 1))))))
|
148
148
|
|
149
|
-
(defun assoc (
|
149
|
+
(defun assoc (V1942 V1943) (cond ((= () V1943) ()) ((and (cons? V1943) (and (cons? (hd V1943)) (= (hd (hd V1943)) V1942))) (hd V1943)) ((cons? V1943) (assoc V1942 (tl V1943))) (true (shen.sys-error assoc))))
|
150
150
|
|
151
|
-
(defun boolean? (
|
151
|
+
(defun boolean? (V1949) (cond ((= true V1949) true) ((= false V1949) true) (true false)))
|
152
152
|
|
153
|
-
(defun nl (
|
154
|
-
" (stoutput)) (nl (-
|
153
|
+
(defun nl (V1950) (cond ((= 0 V1950) 0) (true (do (shen.prhush "
|
154
|
+
" (stoutput)) (nl (- V1950 1))))))
|
155
155
|
|
156
|
-
(defun difference (
|
156
|
+
(defun difference (V1953 V1954) (cond ((= () V1953) ()) ((cons? V1953) (if (element? (hd V1953) V1954) (difference (tl V1953) V1954) (cons (hd V1953) (difference (tl V1953) V1954)))) (true (shen.sys-error difference))))
|
157
157
|
|
158
|
-
(defun do (
|
158
|
+
(defun do (V1955 V1956) V1956)
|
159
159
|
|
160
|
-
(defun element? (
|
160
|
+
(defun element? (V1965 V1966) (cond ((= () V1966) false) ((and (cons? V1966) (= (hd V1966) V1965)) true) ((cons? V1966) (element? V1965 (tl V1966))) (true (shen.sys-error element?))))
|
161
161
|
|
162
|
-
(defun empty? (
|
162
|
+
(defun empty? (V1972) (cond ((= () V1972) true) (true false)))
|
163
163
|
|
164
|
-
(defun fix (
|
164
|
+
(defun fix (V1973 V1974) (shen.fix-help V1973 V1974 (V1973 V1974)))
|
165
165
|
|
166
|
-
(defun shen.fix-help (
|
166
|
+
(defun shen.fix-help (V1981 V1982 V1983) (cond ((= V1983 V1982) V1983) (true (shen.fix-help V1981 V1983 (V1981 V1983)))))
|
167
167
|
|
168
|
-
(defun put (
|
168
|
+
(defun put (V1985 V1986 V1987 V1988) (let N (hash V1985 (limit V1988)) (let Entry (trap-error (<-vector V1988 N) (lambda E ())) (let Change (vector-> V1988 N (shen.change-pointer-value V1985 V1986 V1987 Entry)) V1987))))
|
169
169
|
|
170
|
-
(defun shen.change-pointer-value (
|
170
|
+
(defun shen.change-pointer-value (V1991 V1992 V1993 V1994) (cond ((= () V1994) (cons (cons (cons V1991 (cons V1992 ())) V1993) ())) ((and (cons? V1994) (and (cons? (hd V1994)) (and (cons? (hd (hd V1994))) (and (cons? (tl (hd (hd V1994)))) (and (= () (tl (tl (hd (hd V1994))))) (and (= (hd (tl (hd (hd V1994)))) V1992) (= (hd (hd (hd V1994))) V1991))))))) (cons (cons (hd (hd V1994)) V1993) (tl V1994))) ((cons? V1994) (cons (hd V1994) (shen.change-pointer-value V1991 V1992 V1993 (tl V1994)))) (true (shen.sys-error shen.change-pointer-value))))
|
171
171
|
|
172
|
-
(defun get (
|
173
|
-
"))) (let Result (assoc (cons
|
172
|
+
(defun get (V1997 V1998 V1999) (let N (hash V1997 (limit V1999)) (let Entry (trap-error (<-vector V1999 N) (lambda E (simple-error "pointer not found
|
173
|
+
"))) (let Result (assoc (cons V1997 (cons V1998 ())) Entry) (if (empty? Result) (simple-error "value not found
|
174
174
|
") (tl Result))))))
|
175
175
|
|
176
|
-
(defun hash (
|
176
|
+
(defun hash (V2000 V2001) (let Hash (shen.mod (sum (map (lambda X1854 (string->n X1854)) (explode V2000))) V2001) (if (= 0 Hash) 1 Hash)))
|
177
177
|
|
178
|
-
(defun shen.mod (
|
178
|
+
(defun shen.mod (V2002 V2003) (shen.modh V2002 (shen.multiples V2002 (cons V2003 ()))))
|
179
179
|
|
180
|
-
(defun shen.multiples (
|
180
|
+
(defun shen.multiples (V2004 V2005) (cond ((and (cons? V2005) (> (hd V2005) V2004)) (tl V2005)) ((cons? V2005) (shen.multiples V2004 (cons (* 2 (hd V2005)) V2005))) (true (shen.sys-error shen.multiples))))
|
181
181
|
|
182
|
-
(defun shen.modh (
|
182
|
+
(defun shen.modh (V2008 V2009) (cond ((= 0 V2008) 0) ((= () V2009) V2008) ((and (cons? V2009) (> (hd V2009) V2008)) (if (empty? (tl V2009)) V2008 (shen.modh V2008 (tl V2009)))) ((cons? V2009) (shen.modh (- V2008 (hd V2009)) V2009)) (true (shen.sys-error shen.modh))))
|
183
183
|
|
184
|
-
(defun sum (
|
184
|
+
(defun sum (V2010) (cond ((= () V2010) 0) ((cons? V2010) (+ (hd V2010) (sum (tl V2010)))) (true (shen.sys-error sum))))
|
185
185
|
|
186
|
-
(defun head (
|
186
|
+
(defun head (V2017) (cond ((cons? V2017) (hd V2017)) (true (simple-error "head expects a non-empty list"))))
|
187
187
|
|
188
|
-
(defun tail (
|
188
|
+
(defun tail (V2024) (cond ((cons? V2024) (tl V2024)) (true (simple-error "tail expects a non-empty list"))))
|
189
189
|
|
190
|
-
(defun hdstr (
|
190
|
+
(defun hdstr (V2025) (pos V2025 0))
|
191
191
|
|
192
|
-
(defun intersection (
|
192
|
+
(defun intersection (V2028 V2029) (cond ((= () V2028) ()) ((cons? V2028) (if (element? (hd V2028) V2029) (cons (hd V2028) (intersection (tl V2028) V2029)) (intersection (tl V2028) V2029))) (true (shen.sys-error intersection))))
|
193
193
|
|
194
|
-
(defun reverse (
|
194
|
+
(defun reverse (V2030) (shen.reverse_help V2030 ()))
|
195
195
|
|
196
|
-
(defun shen.reverse_help (
|
196
|
+
(defun shen.reverse_help (V2031 V2032) (cond ((= () V2031) V2032) ((cons? V2031) (shen.reverse_help (tl V2031) (cons (hd V2031) V2032))) (true (shen.sys-error shen.reverse_help))))
|
197
197
|
|
198
|
-
(defun union (
|
198
|
+
(defun union (V2033 V2034) (cond ((= () V2033) V2034) ((cons? V2033) (if (element? (hd V2033) V2034) (union (tl V2033) V2034) (cons (hd V2033) (union (tl V2033) V2034)))) (true (shen.sys-error union))))
|
199
199
|
|
200
|
-
(defun y-or-n? (
|
201
|
-
" (stoutput)) (y-or-n?
|
200
|
+
(defun y-or-n? (V2035) (let Message (shen.prhush (shen.proc-nl V2035) (stoutput)) (let Y-or-N (shen.prhush " (y/n) " (stoutput)) (let Input (shen.app (read (stinput)) "" shen.s) (if (= "y" Input) true (if (= "n" Input) false (do (shen.prhush "please answer y or n
|
201
|
+
" (stoutput)) (y-or-n? V2035))))))))
|
202
202
|
|
203
|
-
(defun not (
|
203
|
+
(defun not (V2036) (if V2036 false true))
|
204
204
|
|
205
|
-
(defun subst (
|
205
|
+
(defun subst (V2045 V2046 V2047) (cond ((= V2047 V2046) V2045) ((cons? V2047) (cons (subst V2045 V2046 (hd V2047)) (subst V2045 V2046 (tl V2047)))) (true V2047)))
|
206
206
|
|
207
|
-
(defun explode (
|
207
|
+
(defun explode (V2049) (shen.explode-h (shen.app V2049 "" shen.a)))
|
208
208
|
|
209
|
-
(defun shen.explode-h (
|
209
|
+
(defun shen.explode-h (V2050) (cond ((= "" V2050) ()) ((shen.+string? V2050) (cons (pos V2050 0) (shen.explode-h (tlstr V2050)))) (true (shen.sys-error shen.explode-h))))
|
210
210
|
|
211
|
-
(defun cd (
|
211
|
+
(defun cd (V2051) (set *home-directory* (if (= V2051 "") "" (shen.app V2051 "/" shen.a))))
|
212
212
|
|
213
|
-
(defun map (
|
213
|
+
(defun map (V2052 V2053) (shen.map-h V2052 V2053 ()))
|
214
214
|
|
215
|
-
(defun shen.map-h (
|
215
|
+
(defun shen.map-h (V2056 V2057 V2058) (cond ((= () V2057) (reverse V2058)) ((cons? V2057) (shen.map-h V2056 (tl V2057) (cons (V2056 (hd V2057)) V2058))) (true (shen.sys-error shen.map-h))))
|
216
216
|
|
217
|
-
(defun length (
|
217
|
+
(defun length (V2059) (shen.length-h V2059 0))
|
218
218
|
|
219
|
-
(defun shen.length-h (
|
219
|
+
(defun shen.length-h (V2060 V2061) (cond ((= () V2060) V2061) (true (shen.length-h (tl V2060) (+ V2061 1)))))
|
220
220
|
|
221
|
-
(defun occurrences (
|
221
|
+
(defun occurrences (V2070 V2071) (cond ((= V2071 V2070) 1) ((cons? V2071) (+ (occurrences V2070 (hd V2071)) (occurrences V2070 (tl V2071)))) (true 0)))
|
222
222
|
|
223
|
-
(defun nth (
|
223
|
+
(defun nth (V2079 V2080) (cond ((and (= 1 V2079) (cons? V2080)) (hd V2080)) ((cons? V2080) (nth (- V2079 1) (tl V2080))) (true (shen.sys-error nth))))
|
224
224
|
|
225
|
-
(defun integer? (
|
225
|
+
(defun integer? (V2081) (and (number? V2081) (let Abs (shen.abs V2081) (shen.integer-test? Abs (shen.magless Abs 1)))))
|
226
226
|
|
227
|
-
(defun shen.abs (
|
227
|
+
(defun shen.abs (V2082) (if (> V2082 0) V2082 (- 0 V2082)))
|
228
228
|
|
229
|
-
(defun shen.magless (
|
229
|
+
(defun shen.magless (V2083 V2084) (let Nx2 (* V2084 2) (if (> Nx2 V2083) V2084 (shen.magless V2083 Nx2))))
|
230
230
|
|
231
|
-
(defun shen.integer-test? (
|
231
|
+
(defun shen.integer-test? (V2088 V2089) (cond ((= 0 V2088) true) ((> 1 V2088) false) (true (let Abs-N (- V2088 V2089) (if (> 0 Abs-N) (integer? V2088) (shen.integer-test? Abs-N V2089))))))
|
232
232
|
|
233
|
-
(defun mapcan (
|
233
|
+
(defun mapcan (V2092 V2093) (cond ((= () V2093) ()) ((cons? V2093) (append (V2092 (hd V2093)) (mapcan V2092 (tl V2093)))) (true (shen.sys-error mapcan))))
|
234
234
|
|
235
|
-
(defun == (
|
235
|
+
(defun == (V2102 V2103) (cond ((= V2103 V2102) true) (true false)))
|
236
236
|
|
237
237
|
(defun abort () (simple-error ""))
|
238
238
|
|
239
|
-
(defun bound? (
|
239
|
+
(defun bound? (V2105) (and (symbol? V2105) (let Val (trap-error (value V2105) (lambda E shen.this-symbol-is-unbound)) (if (= Val shen.this-symbol-is-unbound) false true))))
|
240
240
|
|
241
|
-
(defun shen.string->bytes (
|
241
|
+
(defun shen.string->bytes (V2106) (cond ((= "" V2106) ()) (true (cons (string->n (pos V2106 0)) (shen.string->bytes (tlstr V2106))))))
|
242
242
|
|
243
|
-
(defun maxinferences (
|
243
|
+
(defun maxinferences (V2107) (set shen.*maxinferences* V2107))
|
244
244
|
|
245
245
|
(defun inferences () (value shen.*infs*))
|
246
246
|
|
247
|
-
(defun protect (
|
247
|
+
(defun protect (V2108) V2108)
|
248
248
|
|
249
249
|
(defun stoutput () (value *stoutput*))
|
250
250
|
|
251
|
-
(defun string->symbol (
|
251
|
+
(defun string->symbol (V2109) (let Symbol (intern V2109) (if (symbol? Symbol) Symbol (simple-error (cn "cannot intern " (shen.app V2109 " to a symbol" shen.s))))))
|
252
252
|
|
253
|
-
(defun shen.optimise (
|
253
|
+
(defun shen.optimise (V2114) (cond ((= + V2114) (set shen.*optimise* true)) ((= - V2114) (set shen.*optimise* false)) (true (simple-error "optimise expects a + or a -.
|
254
254
|
"))))
|
255
255
|
|
256
256
|
(defun os () (value *os*))
|