shen-ruby 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # ShenRuby Release History
2
2
 
3
+ ## 0.8.0 - November 29, 2013
4
+ ### Features
5
+ - Upgrade to Shen 14
6
+
7
+ ### Misc
8
+ - Removed JRuby from "known limitations". ShenRuby runs and passes the test suite under JRuby 1.7.8.
9
+
3
10
  ## 0.7.0 - July 3, 2013
4
11
  ### Features
5
12
  - Upgrade to Shen 13
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ShenRuby
2
2
  ShenRuby is a Ruby port of the [Shen](http://shenlanguage.org/) programming language. Shen is a modern, functional Lisp that supports pattern matching, currying, and optional static type checking.
3
3
 
4
- ShenRuby supports Shen version 13, which was released in July, 2013.
4
+ ShenRuby supports Shen version 14, which was released in November, 2013.
5
5
 
6
6
  The ShenRuby project has two primary goals. The first is to be a low barrier-to-entry means for Rubyists to explore Shen. To someone with a working installation of Ruby 1.9.3, a Shen REPL is only a gem install away.
7
7
 
@@ -12,7 +12,7 @@ ShenRuby 0.1.0 began to satisfy the first goal by providing a Shen REPL accessib
12
12
  [![Build Status](https://travis-ci.org/gregspurrier/shen-ruby.png)](https://travis-ci.org/gregspurrier/shen-ruby)
13
13
 
14
14
  ## Installation
15
- NOTE: ShenRuby requires Ruby 1.9 language features. It has been tested with Ruby 1.9.3 and Ruby 2.0.0. It has been lightly tested with Rubinius 2.0.0-head running in 1.9 mode. It is not yet working under JRuby.
15
+ NOTE: ShenRuby requires Ruby 1.9 language features. It has been tested with Ruby 1.9.3 and Ruby 2.0.0. It has been lightly tested with JRuby 1.7.8.
16
16
 
17
17
  ShenRuby 0.7.0 is the current release. To install it as a gem, use the following command:
18
18
 
@@ -27,9 +27,9 @@ Once the gem has been installed, the Shen REPL can be launched via the `srrepl`
27
27
 
28
28
  Shen 2010, copyright (C) 2010 Mark Tarver
29
29
  released under the Shen license
30
- www.shenlanguage.org, version 13
30
+ www.shenlanguage.org, version 14
31
31
  running under Ruby, implementation: ruby 2.0.0
32
- port 0.7.0 ported by Greg Spurrier
32
+ port 0.8.0 ported by Greg Spurrier
33
33
 
34
34
 
35
35
  (0-)
@@ -141,7 +141,7 @@ The following resources may be helpful for those wanting to learn more about the
141
141
  - [The Shen Official Standard](http://www.shenlanguage.org/Documentation/shendoc.htm)
142
142
  - [System Functions and their Types in Shen](http://www.shenlanguage.org/learn-shen/system.pdf) -- A reference for all of the standard Shen functions and their types.
143
143
  - [The Book of Shen](http://www.fast-print.net/bookshop/1278/the-book-of-shen) -- The official guide to the Shen programming language.
144
- - [Shen Google Group](https://groups.google.com/group/qilang?hl=en) -- This is the online forum for discussions related to Shen. Don't be confused by the group's name (Qilang). Qi was the predecessor of Shen and the group retains its name.
144
+ - [Shen Google Group](https://groups.google.com/group/qilang?hl=en) -- This is the online forum for discussions related to Shen.
145
145
 
146
146
  ## Road Map to 1.0
147
147
 
@@ -149,14 +149,14 @@ The following features and improvements are among those planned for ShenRuby as
149
149
 
150
150
  - Ability to call Ruby methods directly from Shen
151
151
  - Support for command-line Shen scripts that under ShenRuby
152
- - Support for JRuby and Rubinius
152
+ - Support for Rubinius
153
153
  - Thread-safe `ShenRuby::Shen` instances
154
154
  - Improved performance
155
155
 
156
156
  ## Known Limitations
157
157
  - The "Qi interpreter - chapter 13" test case in the Shen Test Suite and some of the benchmarks are currently failing with stack overflow errors.
158
158
  - ShenRuby fails with a stack overflow when run under cygwin on Windows ([Issue #3](https://github.com/gregspurrier/shen-ruby/issues/3)). The Ruby environment installed by [RubyInstaller](http://rubyinstaller.org/), however, is capable of running ShenRuby. It is the recommended environment for running ShenRuby on Windows until the stack overflow issues seen on cygwin can be addressed.
159
- - ShenRuby fails to load under JRuby ([Issue #6](https://github.com/gregspurrier/shen-ruby/issues/6)) and Rubinius ([Issue #])(https://github.com/gregspurrier/shen-ruby/issues/7)].
159
+ - ShenRuby fails to load under Rubinius ([Issue #7])(https://github.com/gregspurrier/shen-ruby/issues/7)].
160
160
 
161
161
  ## Contributors
162
162
  The following people are gratefully acknowledged for their contributions to ShenRuby:
@@ -1,3 +1,3 @@
1
1
  module ShenRuby
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
data/shen-ruby.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.email = ["greg@sourcematters.org"]
13
13
  s.homepage = "https://github.com/gregspurrier/shen-ruby"
14
14
  s.summary = %q{ShenRuby is a Ruby port of the Shen programming language}
15
- s.description = %q{ShenRuby is a port of the Shen programming language to Ruby. It currently supports Shen version 13.}
15
+ s.description = %q{ShenRuby is a port of the Shen programming language to Ruby. It currently supports Shen version 14.}
16
16
 
17
17
  s.required_ruby_version = ">= 1.9.3"
18
18
 
data/shen/README.txt CHANGED
@@ -7,7 +7,7 @@ Directory contents:
7
7
 
8
8
  README.txt -- this file
9
9
  license.txt -- the Shen license
10
- release/ -- files extracted directly from the Shen 13 Source
10
+ release/ -- files extracted directly from the Shen 14 Source
11
11
  release. The complete source for the most recent
12
12
  release of Shen may be downloaded from
13
13
  http://www.shenlanguage.org/Download/index.htm
@@ -73,7 +73,7 @@
73
73
 
74
74
  (set shen.*alphabet* (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 ())))))))))))))))))))))))))))
75
75
 
76
- (set shen.*special* (cons @p (cons @s (cons @v (cons cons (cons lambda (cons let (cons type (cons where (cons set (cons open ())))))))))))
76
+ (set shen.*special* (cons @p (cons @s (cons @v (cons cons (cons lambda (cons let (cons where (cons set (cons open ()))))))))))
77
77
 
78
78
  (set shen.*extraspecial* (cons define (cons shen.process-datatype (cons input+ (cons defcc (cons read+ (cons defmacro ())))))))
79
79
 
@@ -109,17 +109,19 @@
109
109
 
110
110
  (set shen.*optimise* false)
111
111
 
112
+ (set *version* "version 14")
113
+
112
114
  (defun shen.initialise_arity_table (V820) (cond ((= () V820) ()) ((and (cons? V820) (cons? (tl V820))) (let DecArity (put (hd V820) arity (hd (tl V820)) (value *property-vector*)) (shen.initialise_arity_table (tl (tl V820))))) (true (shen.sys-error shen.initialise_arity_table))))
113
115
 
114
116
  (defun arity (V821) (trap-error (get V821 arity (value *property-vector*)) (lambda E -1)))
115
117
 
116
- (shen.initialise_arity_table (cons absvector (cons 1 (cons adjoin (cons 2 (cons and (cons 2 (cons append (cons 2 (cons arity (cons 1 (cons assoc (cons 2 (cons boolean? (cons 1 (cons cd (cons 1 (cons compile (cons 3 (cons concat (cons 2 (cons cons (cons 2 (cons cons? (cons 1 (cons cn (cons 2 (cons declare (cons 2 (cons destroy (cons 1 (cons difference (cons 2 (cons do (cons 2 (cons element? (cons 2 (cons empty? (cons 1 (cons enable-type-theory (cons 1 (cons interror (cons 2 (cons eval (cons 1 (cons eval-kl (cons 1 (cons explode (cons 1 (cons external (cons 1 (cons fail-if (cons 2 (cons fail (cons 0 (cons fix (cons 2 (cons findall (cons 5 (cons freeze (cons 1 (cons fst (cons 1 (cons gensym (cons 1 (cons get (cons 3 (cons get-time (cons 1 (cons address-> (cons 3 (cons <-address (cons 2 (cons <-vector (cons 2 (cons > (cons 2 (cons >= (cons 2 (cons = (cons 2 (cons hd (cons 1 (cons hdv (cons 1 (cons hdstr (cons 1 (cons head (cons 1 (cons if (cons 3 (cons integer? (cons 1 (cons intern (cons 1 (cons identical (cons 4 (cons inferences (cons 0 (cons input (cons 1 (cons input+ (cons 2 (cons intersection (cons 2 (cons kill (cons 0 (cons length (cons 1 (cons lineread (cons 1 (cons load (cons 1 (cons < (cons 2 (cons <= (cons 2 (cons vector (cons 1 (cons macroexpand (cons 1 (cons map (cons 2 (cons mapcan (cons 2 (cons maxinferences (cons 1 (cons not (cons 1 (cons nth (cons 2 (cons n->string (cons 1 (cons number? (cons 1 (cons occurs-check (cons 1 (cons occurrences (cons 2 (cons occurs-check (cons 1 (cons optimise (cons 1 (cons or (cons 2 (cons package (cons 3 (cons pos (cons 2 (cons print (cons 1 (cons profile (cons 1 (cons profile-results (cons 0 (cons pr (cons 2 (cons ps (cons 1 (cons preclude (cons 1 (cons preclude-all-but (cons 1 (cons protect (cons 1 (cons address-> (cons 3 (cons put (cons 4 (cons shen.reassemble (cons 2 (cons read-file-as-string (cons 1 (cons read-file (cons 1 (cons read (cons 1 (cons read-byte (cons 1 (cons read-from-string (cons 1 (cons remove (cons 2 (cons reverse (cons 1 (cons set (cons 2 (cons simple-error (cons 1 (cons snd (cons 1 (cons specialise (cons 1 (cons spy (cons 1 (cons step (cons 1 (cons stinput (cons 0 (cons stoutput (cons 0 (cons string->n (cons 1 (cons string->symbol (cons 1 (cons string? (cons 1 (cons shen.strong-warning (cons 1 (cons subst (cons 3 (cons shen.sum (cons 1 (cons symbol? (cons 1 (cons tail (cons 1 (cons tl (cons 1 (cons tc (cons 1 (cons tc? (cons 1 (cons thaw (cons 1 (cons tlstr (cons 1 (cons track (cons 1 (cons trap-error (cons 2 (cons tuple? (cons 1 (cons type (cons 1 (cons return (cons 3 (cons undefmacro (cons 1 (cons unprofile (cons 1 (cons unify (cons 4 (cons unify! (cons 4 (cons union (cons 2 (cons untrack (cons 1 (cons unspecialise (cons 1 (cons undefmacro (cons 1 (cons vector (cons 1 (cons vector-> (cons 3 (cons value (cons 1 (cons variable? (cons 1 (cons version (cons 1 (cons warn (cons 1 (cons write-byte (cons 2 (cons write-to-file (cons 2 (cons y-or-n? (cons 1 (cons + (cons 2 (cons * (cons 2 (cons / (cons 2 (cons - (cons 2 (cons == (cons 2 (cons <e> (cons 1 (cons @p (cons 2 (cons @v (cons 2 (cons @s (cons 2 (cons preclude (cons 1 (cons include (cons 1 (cons preclude-all-but (cons 1 (cons include-all-but (cons 1 (cons where (cons 2 ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
118
+ (shen.initialise_arity_table (cons absvector (cons 1 (cons adjoin (cons 2 (cons and (cons 2 (cons append (cons 2 (cons arity (cons 1 (cons assoc (cons 2 (cons boolean? (cons 1 (cons cd (cons 1 (cons compile (cons 3 (cons concat (cons 2 (cons cons (cons 2 (cons cons? (cons 1 (cons cn (cons 2 (cons declare (cons 2 (cons destroy (cons 1 (cons difference (cons 2 (cons do (cons 2 (cons element? (cons 2 (cons empty? (cons 1 (cons enable-type-theory (cons 1 (cons interror (cons 2 (cons eval (cons 1 (cons eval-kl (cons 1 (cons explode (cons 1 (cons external (cons 1 (cons fail-if (cons 2 (cons fail (cons 0 (cons fix (cons 2 (cons findall (cons 5 (cons freeze (cons 1 (cons fst (cons 1 (cons gensym (cons 1 (cons get (cons 3 (cons get-time (cons 1 (cons address-> (cons 3 (cons <-address (cons 2 (cons <-vector (cons 2 (cons > (cons 2 (cons >= (cons 2 (cons = (cons 2 (cons hd (cons 1 (cons hdv (cons 1 (cons hdstr (cons 1 (cons head (cons 1 (cons if (cons 3 (cons integer? (cons 1 (cons intern (cons 1 (cons identical (cons 4 (cons inferences (cons 0 (cons input (cons 1 (cons input+ (cons 2 (cons implementation (cons 0 (cons intersection (cons 2 (cons kill (cons 0 (cons language (cons 0 (cons length (cons 1 (cons lineread (cons 1 (cons load (cons 1 (cons < (cons 2 (cons <= (cons 2 (cons vector (cons 1 (cons macroexpand (cons 1 (cons map (cons 2 (cons mapcan (cons 2 (cons maxinferences (cons 1 (cons not (cons 1 (cons nth (cons 2 (cons n->string (cons 1 (cons number? (cons 1 (cons occurs-check (cons 1 (cons occurrences (cons 2 (cons occurs-check (cons 1 (cons optimise (cons 1 (cons or (cons 2 (cons os (cons 0 (cons package (cons 3 (cons port (cons 0 (cons porters (cons 0 (cons pos (cons 2 (cons print (cons 1 (cons profile (cons 1 (cons profile-results (cons 0 (cons pr (cons 2 (cons ps (cons 1 (cons preclude (cons 1 (cons preclude-all-but (cons 1 (cons protect (cons 1 (cons address-> (cons 3 (cons put (cons 4 (cons shen.reassemble (cons 2 (cons read-file-as-string (cons 1 (cons read-file (cons 1 (cons read (cons 1 (cons read-byte (cons 1 (cons read-from-string (cons 1 (cons release (cons 0 (cons remove (cons 2 (cons reverse (cons 1 (cons set (cons 2 (cons simple-error (cons 1 (cons snd (cons 1 (cons specialise (cons 1 (cons spy (cons 1 (cons step (cons 1 (cons stinput (cons 0 (cons stoutput (cons 0 (cons string->n (cons 1 (cons string->symbol (cons 1 (cons string? (cons 1 (cons shen.strong-warning (cons 1 (cons subst (cons 3 (cons sum (cons 1 (cons symbol? (cons 1 (cons tail (cons 1 (cons tl (cons 1 (cons tc (cons 1 (cons tc? (cons 0 (cons thaw (cons 1 (cons tlstr (cons 1 (cons track (cons 1 (cons trap-error (cons 2 (cons tuple? (cons 1 (cons type (cons 1 (cons return (cons 3 (cons undefmacro (cons 1 (cons unprofile (cons 1 (cons unify (cons 4 (cons unify! (cons 4 (cons union (cons 2 (cons untrack (cons 1 (cons unspecialise (cons 1 (cons undefmacro (cons 1 (cons vector (cons 1 (cons vector-> (cons 3 (cons value (cons 1 (cons variable? (cons 1 (cons version (cons 0 (cons warn (cons 1 (cons write-byte (cons 2 (cons write-to-file (cons 2 (cons y-or-n? (cons 1 (cons + (cons 2 (cons * (cons 2 (cons / (cons 2 (cons - (cons 2 (cons == (cons 2 (cons <e> (cons 1 (cons @p (cons 2 (cons @v (cons 2 (cons @s (cons 2 (cons preclude (cons 1 (cons include (cons 1 (cons preclude-all-but (cons 1 (cons include-all-but (cons 1 (cons where (cons 2 ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
117
119
 
118
120
  (defun systemf (V822) (let Shen (intern "shen") (let External (get Shen shen.external-symbols (value *property-vector*)) (put Shen shen.external-symbols (adjoin V822 External) (value *property-vector*)))))
119
121
 
120
122
  (defun adjoin (V823 V824) (if (element? V823 V824) V824 (cons V823 V824)))
121
123
 
122
- (put (intern "shen") shen.external-symbols (cons ! (cons } (cons { (cons --> (cons <-- (cons && (cons : (cons ; (cons :- (cons := (cons _ (cons *language* (cons *implementation* (cons *stinput* (cons *home-directory* (cons *version* (cons *maximum-print-sequence-size* (cons *macros* (cons *os* (cons *release* (cons *property-vector* (cons @v (cons @p (cons @s (cons *port* (cons *porters* (cons *hush* (cons <- (cons -> (cons <e> (cons == (cons = (cons >= (cons > (cons /. (cons =! (cons $ (cons - (cons / (cons * (cons + (cons <= (cons < (cons >> (cons (vector 0) (cons ==> (cons y-or-n? (cons write-to-file (cons write-byte (cons where (cons when (cons warn (cons version (cons verified (cons variable? (cons value (cons vector-> (cons <-vector (cons vector (cons vector? (cons unspecialise (cons untrack (cons unit (cons shen.unix (cons union (cons unify (cons unify! (cons unprofile (cons undefmacro (cons return (cons type (cons tuple? (cons true (cons trap-error (cons track (cons time (cons thaw (cons tc? (cons tc (cons tl (cons tlstr (cons tlv (cons tail (cons systemf (cons synonyms (cons symbol (cons symbol? (cons string->symbol (cons subst (cons string? (cons string->n (cons stream (cons string (cons stinput (cons stoutput (cons step (cons spy (cons specialise (cons snd (cons simple-error (cons set (cons save (cons str (cons run (cons reverse (cons remove (cons read (cons read+ (cons read-file (cons read-file-as-bytelist (cons read-file-as-string (cons read-byte (cons read-from-string (cons quit (cons put (cons preclude (cons preclude-all-but (cons ps (cons prolog? (cons protect (cons profile-results (cons profile (cons print (cons pr (cons pos (cons package (cons output (cons out (cons or (cons open (cons occurrences (cons occurs-check (cons n->string (cons number? (cons number (cons null (cons nth (cons not (cons nl (cons mode (cons macro (cons macroexpand (cons maxinferences (cons mapcan (cons map (cons make-string (cons load (cons loaded (cons list (cons lineread (cons limit (cons length (cons let (cons lazy (cons lambda (cons kill (cons is (cons intersection (cons inferences (cons intern (cons integer? (cons input (cons input+ (cons include (cons include-all-but (cons in (cons if (cons identical (cons head (cons hd (cons hdv (cons hdstr (cons hash (cons get (cons get-time (cons gensym (cons function (cons fst (cons freeze (cons fix (cons file (cons fail (cons fail-if (cons fwhen (cons findall (cons false (cons enable-type-theory (cons explode (cons external (cons exception (cons eval-kl (cons eval (cons error-to-string (cons error (cons empty? (cons element? (cons do (cons difference (cons destroy (cons defun (cons define (cons defmacro (cons defcc (cons defprolog (cons declare (cons datatype (cons cut (cons cn (cons cons? (cons cons (cons cond (cons concat (cons compile (cons cd (cons cases (cons call (cons close (cons bind (cons bound? (cons boolean? (cons boolean (cons bar! (cons assoc (cons arity (cons append (cons and (cons adjoin (cons <-address (cons address-> (cons absvector? (cons absvector (cons abort ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (value *property-vector*))
124
+ (put (intern "shen") shen.external-symbols (cons ! (cons } (cons { (cons --> (cons <-- (cons && (cons : (cons ; (cons :- (cons := (cons _ (cons *language* (cons *implementation* (cons *stinput* (cons *home-directory* (cons *version* (cons *maximum-print-sequence-size* (cons *macros* (cons *os* (cons *release* (cons *property-vector* (cons @v (cons @p (cons @s (cons *port* (cons *porters* (cons *hush* (cons <- (cons -> (cons <e> (cons == (cons = (cons >= (cons > (cons /. (cons =! (cons $ (cons - (cons / (cons * (cons + (cons <= (cons < (cons >> (cons (vector 0) (cons ==> (cons y-or-n? (cons write-to-file (cons write-byte (cons where (cons when (cons warn (cons version (cons verified (cons variable? (cons value (cons vector-> (cons <-vector (cons vector (cons vector? (cons unspecialise (cons untrack (cons unit (cons shen.unix (cons union (cons unify (cons unify! (cons unprofile (cons undefmacro (cons return (cons type (cons tuple? (cons true (cons trap-error (cons track (cons time (cons thaw (cons tc? (cons tc (cons tl (cons tlstr (cons tlv (cons tail (cons systemf (cons synonyms (cons symbol (cons symbol? (cons string->symbol (cons subst (cons string? (cons string->n (cons stream (cons string (cons stinput (cons stoutput (cons step (cons spy (cons specialise (cons snd (cons simple-error (cons set (cons save (cons str (cons run (cons reverse (cons remove (cons release (cons read (cons read+ (cons read-file (cons read-file-as-bytelist (cons read-file-as-string (cons read-byte (cons read-from-string (cons quit (cons put (cons preclude (cons preclude-all-but (cons ps (cons prolog? (cons protect (cons profile-results (cons profile (cons print (cons pr (cons pos (cons porters (cons port (cons package (cons output (cons out (cons os (cons or (cons open (cons occurrences (cons occurs-check (cons n->string (cons number? (cons number (cons null (cons nth (cons not (cons nl (cons mode (cons macro (cons macroexpand (cons maxinferences (cons mapcan (cons map (cons make-string (cons load (cons loaded (cons list (cons lineread (cons limit (cons length (cons let (cons lazy (cons lambda (cons language (cons kill (cons is (cons intersection (cons inferences (cons intern (cons integer? (cons input (cons input+ (cons include (cons include-all-but (cons in (cons implementation (cons if (cons identical (cons head (cons hd (cons hdv (cons hdstr (cons hash (cons get (cons get-time (cons gensym (cons function (cons fst (cons freeze (cons fix (cons file (cons fail (cons fail-if (cons fwhen (cons findall (cons false (cons enable-type-theory (cons explode (cons external (cons exception (cons eval-kl (cons eval (cons error-to-string (cons error (cons empty? (cons element? (cons do (cons difference (cons destroy (cons defun (cons define (cons defmacro (cons defcc (cons defprolog (cons declare (cons datatype (cons cut (cons cn (cons cons? (cons cons (cons cond (cons concat (cons compile (cons cd (cons cases (cons call (cons close (cons bind (cons bound? (cons boolean? (cons boolean (cons bar! (cons assoc (cons arity (cons append (cons and (cons adjoin (cons <-address (cons address-> (cons absvector? (cons absvector (cons abort ())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (value *property-vector*))
123
125
 
124
126
  (defun specialise (V825) (do (set shen.*special* (cons V825 (value shen.*special*))) V825))
125
127
 
@@ -74,7 +74,7 @@ typechecked in " (shen.app (inferences) " inferences
74
74
 
75
75
  (defun shen.<sig+rest> (V864) (let Result (let Parse_shen.<signature> (shen.<signature> V864) (if (not (= (fail) Parse_shen.<signature>)) (let Parse_<!> (<!> Parse_shen.<signature>) (if (not (= (fail) Parse_<!>)) (shen.pair (hd Parse_<!>) (shen.hdtl Parse_shen.<signature>)) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
76
76
 
77
- (defun write-to-file (V865 V866) (let Stream (open file V865 out) (let String (if (string? V866) (shen.app V866 "
77
+ (defun write-to-file (V865 V866) (let Stream (open V865 out) (let String (if (string? V866) (shen.app V866 "
78
78
 
79
79
  " shen.a) (shen.app V866 "
80
80
 
@@ -63,15 +63,17 @@
63
63
 
64
64
  (defun shen.compile-macro (V875) (cond ((and (cons? V875) (and (= compile (hd V875)) (and (cons? (tl V875)) (and (cons? (tl (tl V875))) (= () (tl (tl (tl V875)))))))) (cons compile (cons (hd (tl V875)) (cons (hd (tl (tl V875))) (cons (cons lambda (cons E (cons (cons if (cons (cons cons? (cons E ())) (cons (cons error (cons "parse error here: ~S~%" (cons E ()))) (cons (cons error (cons "parse error~%" ())) ())))) ()))) ()))))) (true V875)))
65
65
 
66
- (defun shen.prolog-macro (V876) (cond ((and (cons? V876) (= prolog? (hd V876))) (cons shen.intprolog (cons (shen.prolog-form (tl V876)) ()))) (true V876)))
66
+ (defun shen.prolog-macro (V876) (cond ((and (cons? V876) (= prolog? (hd V876))) (let F (gensym shen.f) (let Receive (shen.receive-terms (tl V876)) (let PrologDef (eval (append (cons defprolog (cons F ())) (append Receive (append (cons <-- ()) (append (shen.pass-literals (tl V876)) (cons ; ())))))) (let Query (cons F (append Receive (cons (cons shen.start-new-prolog-process ()) (cons (cons freeze (cons true ())) ())))) Query))))) (true V876)))
67
67
 
68
- (defun shen.defprolog-macro (V877) (cond ((and (cons? V877) (and (= defprolog (hd V877)) (cons? (tl V877)))) (compile shen.<defprolog> (tl V877) (lambda Y (shen.prolog-error (hd (tl V877)) Y)))) (true V877)))
68
+ (defun shen.receive-terms (V881) (cond ((= () V881) ()) ((and (cons? V881) (and (cons? (hd V881)) (and (= receive (hd (hd V881))) (and (cons? (tl (hd V881))) (= () (tl (tl (hd V881)))))))) (cons (hd (tl (hd V881))) (shen.receive-terms (tl V881)))) ((cons? V881) (shen.receive-terms (tl V881))) (true (shen.sys-error shen.receive-terms))))
69
69
 
70
- (defun shen.prolog-form (V878) (shen.cons_form (map shen.cons_form V878)))
70
+ (defun shen.pass-literals (V884) (cond ((= () V884) ()) ((and (cons? V884) (and (cons? (hd V884)) (and (= receive (hd (hd V884))) (and (cons? (tl (hd V884))) (= () (tl (tl (hd V884)))))))) (shen.pass-literals (tl V884))) ((cons? V884) (cons (hd V884) (shen.pass-literals (tl V884)))) (true (shen.sys-error shen.pass-literals))))
71
71
 
72
- (defun shen.datatype-macro (V879) (cond ((and (cons? V879) (and (= datatype (hd V879)) (cons? (tl V879)))) (cons shen.process-datatype (cons (shen.intern-type (hd (tl V879))) (cons (cons compile (cons (cons function (cons shen.<datatype-rules> ())) (cons (shen.rcons_form (tl (tl V879))) (cons (cons function (cons shen.datatype-error ())) ())))) ())))) (true V879)))
72
+ (defun shen.defprolog-macro (V885) (cond ((and (cons? V885) (and (= defprolog (hd V885)) (cons? (tl V885)))) (compile shen.<defprolog> (tl V885) (lambda Y (shen.prolog-error (hd (tl V885)) Y)))) (true V885)))
73
73
 
74
- (defun shen.intern-type (V880) (intern (cn "type#" (str V880))))
74
+ (defun shen.datatype-macro (V886) (cond ((and (cons? V886) (and (= datatype (hd V886)) (cons? (tl V886)))) (cons shen.process-datatype (cons (shen.intern-type (hd (tl V886))) (cons (cons compile (cons (cons function (cons shen.<datatype-rules> ())) (cons (shen.rcons_form (tl (tl V886))) (cons (cons function (cons shen.datatype-error ())) ())))) ())))) (true V886)))
75
+
76
+ (defun shen.intern-type (V887) (intern (cn "type#" (str V887))))
75
77
 
76
78
  "(defcc <defmacro>
77
79
  <name> <macrorules> := [define <name> | <macrorules>];)
@@ -89,36 +91,36 @@
89
91
  (defcc <macroaction>
90
92
  <action> := [[walk [function macroexpand] <action>]];)"
91
93
 
92
- (defun shen.@s-macro (V881) (cond ((and (cons? V881) (and (= @s (hd V881)) (and (cons? (tl V881)) (and (cons? (tl (tl V881))) (cons? (tl (tl (tl V881)))))))) (cons @s (cons (hd (tl V881)) (cons (shen.@s-macro (cons @s (tl (tl V881)))) ())))) ((and (cons? V881) (and (= @s (hd V881)) (and (cons? (tl V881)) (and (cons? (tl (tl V881))) (and (= () (tl (tl (tl V881)))) (string? (hd (tl V881)))))))) (let E (explode (hd (tl V881))) (if (> (length E) 1) (shen.@s-macro (cons @s (append E (tl (tl V881))))) V881))) (true V881)))
94
+ (defun shen.@s-macro (V888) (cond ((and (cons? V888) (and (= @s (hd V888)) (and (cons? (tl V888)) (and (cons? (tl (tl V888))) (cons? (tl (tl (tl V888)))))))) (cons @s (cons (hd (tl V888)) (cons (shen.@s-macro (cons @s (tl (tl V888)))) ())))) ((and (cons? V888) (and (= @s (hd V888)) (and (cons? (tl V888)) (and (cons? (tl (tl V888))) (and (= () (tl (tl (tl V888)))) (string? (hd (tl V888)))))))) (let E (explode (hd (tl V888))) (if (> (length E) 1) (shen.@s-macro (cons @s (append E (tl (tl V888))))) V888))) (true V888)))
93
95
 
94
- (defun shen.synonyms-macro (V882) (cond ((and (cons? V882) (= synonyms (hd V882))) (cons shen.synonyms-help (cons (shen.rcons_form (tl V882)) ()))) (true V882)))
96
+ (defun shen.synonyms-macro (V889) (cond ((and (cons? V889) (= synonyms (hd V889))) (cons shen.synonyms-help (cons (shen.rcons_form (tl V889)) ()))) (true V889)))
95
97
 
96
- (defun shen.nl-macro (V883) (cond ((and (cons? V883) (and (= nl (hd V883)) (= () (tl V883)))) (cons nl (cons 1 ()))) (true V883)))
98
+ (defun shen.nl-macro (V890) (cond ((and (cons? V890) (and (= nl (hd V890)) (= () (tl V890)))) (cons nl (cons 1 ()))) (true V890)))
97
99
 
98
- (defun shen.assoc-macro (V884) (cond ((and (cons? V884) (and (cons? (tl V884)) (and (cons? (tl (tl V884))) (and (cons? (tl (tl (tl V884)))) (element? (hd V884) (cons @p (cons @v (cons append (cons and (cons or (cons + (cons * (cons do ()))))))))))))) (cons (hd V884) (cons (hd (tl V884)) (cons (shen.assoc-macro (cons (hd V884) (tl (tl V884)))) ())))) (true V884)))
100
+ (defun shen.assoc-macro (V891) (cond ((and (cons? V891) (and (cons? (tl V891)) (and (cons? (tl (tl V891))) (and (cons? (tl (tl (tl V891)))) (element? (hd V891) (cons @p (cons @v (cons append (cons and (cons or (cons + (cons * (cons do ()))))))))))))) (cons (hd V891) (cons (hd (tl V891)) (cons (shen.assoc-macro (cons (hd V891) (tl (tl V891)))) ())))) (true V891)))
99
101
 
100
- (defun shen.let-macro (V885) (cond ((and (cons? V885) (and (= let (hd V885)) (and (cons? (tl V885)) (and (cons? (tl (tl V885))) (and (cons? (tl (tl (tl V885)))) (cons? (tl (tl (tl (tl V885)))))))))) (cons let (cons (hd (tl V885)) (cons (hd (tl (tl V885))) (cons (shen.let-macro (cons let (tl (tl (tl V885))))) ()))))) (true V885)))
102
+ (defun shen.let-macro (V892) (cond ((and (cons? V892) (and (= let (hd V892)) (and (cons? (tl V892)) (and (cons? (tl (tl V892))) (and (cons? (tl (tl (tl V892)))) (cons? (tl (tl (tl (tl V892)))))))))) (cons let (cons (hd (tl V892)) (cons (hd (tl (tl V892))) (cons (shen.let-macro (cons let (tl (tl (tl V892))))) ()))))) (true V892)))
101
103
 
102
- (defun shen.abs-macro (V886) (cond ((and (cons? V886) (and (= /. (hd V886)) (and (cons? (tl V886)) (and (cons? (tl (tl V886))) (cons? (tl (tl (tl V886)))))))) (cons lambda (cons (hd (tl V886)) (cons (shen.abs-macro (cons /. (tl (tl V886)))) ())))) ((and (cons? V886) (and (= /. (hd V886)) (and (cons? (tl V886)) (and (cons? (tl (tl V886))) (= () (tl (tl (tl V886)))))))) (cons lambda (tl V886))) (true V886)))
104
+ (defun shen.abs-macro (V893) (cond ((and (cons? V893) (and (= /. (hd V893)) (and (cons? (tl V893)) (and (cons? (tl (tl V893))) (cons? (tl (tl (tl V893)))))))) (cons lambda (cons (hd (tl V893)) (cons (shen.abs-macro (cons /. (tl (tl V893)))) ())))) ((and (cons? V893) (and (= /. (hd V893)) (and (cons? (tl V893)) (and (cons? (tl (tl V893))) (= () (tl (tl (tl V893)))))))) (cons lambda (tl V893))) (true V893)))
103
105
 
104
- (defun shen.cases-macro (V889) (cond ((and (cons? V889) (and (= cases (hd V889)) (and (cons? (tl V889)) (and (= true (hd (tl V889))) (cons? (tl (tl V889))))))) (hd (tl (tl V889)))) ((and (cons? V889) (and (= cases (hd V889)) (and (cons? (tl V889)) (and (cons? (tl (tl V889))) (= () (tl (tl (tl V889)))))))) (cons if (cons (hd (tl V889)) (cons (hd (tl (tl V889))) (cons (cons simple-error (cons "error: cases exhausted" ())) ()))))) ((and (cons? V889) (and (= cases (hd V889)) (and (cons? (tl V889)) (cons? (tl (tl V889)))))) (cons if (cons (hd (tl V889)) (cons (hd (tl (tl V889))) (cons (shen.cases-macro (cons cases (tl (tl (tl V889))))) ()))))) ((and (cons? V889) (and (= cases (hd V889)) (and (cons? (tl V889)) (= () (tl (tl V889)))))) (simple-error "error: odd number of case elements
105
- ")) (true V889)))
106
+ (defun shen.cases-macro (V896) (cond ((and (cons? V896) (and (= cases (hd V896)) (and (cons? (tl V896)) (and (= true (hd (tl V896))) (cons? (tl (tl V896))))))) (hd (tl (tl V896)))) ((and (cons? V896) (and (= cases (hd V896)) (and (cons? (tl V896)) (and (cons? (tl (tl V896))) (= () (tl (tl (tl V896)))))))) (cons if (cons (hd (tl V896)) (cons (hd (tl (tl V896))) (cons (cons simple-error (cons "error: cases exhausted" ())) ()))))) ((and (cons? V896) (and (= cases (hd V896)) (and (cons? (tl V896)) (cons? (tl (tl V896)))))) (cons if (cons (hd (tl V896)) (cons (hd (tl (tl V896))) (cons (shen.cases-macro (cons cases (tl (tl (tl V896))))) ()))))) ((and (cons? V896) (and (= cases (hd V896)) (and (cons? (tl V896)) (= () (tl (tl V896)))))) (simple-error "error: odd number of case elements
107
+ ")) (true V896)))
106
108
 
107
- (defun shen.timer-macro (V890) (cond ((and (cons? V890) (and (= time (hd V890)) (and (cons? (tl V890)) (= () (tl (tl V890)))))) (shen.let-macro (cons let (cons Start (cons (cons get-time (cons run ())) (cons Result (cons (hd (tl V890)) (cons Finish (cons (cons get-time (cons run ())) (cons Time (cons (cons - (cons Finish (cons Start ()))) (cons Message (cons (cons shen.prhush (cons (cons cn (cons "
109
+ (defun shen.timer-macro (V897) (cond ((and (cons? V897) (and (= time (hd V897)) (and (cons? (tl V897)) (= () (tl (tl V897)))))) (shen.let-macro (cons let (cons Start (cons (cons get-time (cons run ())) (cons Result (cons (hd (tl V897)) (cons Finish (cons (cons get-time (cons run ())) (cons Time (cons (cons - (cons Finish (cons Start ()))) (cons Message (cons (cons shen.prhush (cons (cons cn (cons "
108
110
  run time: " (cons (cons cn (cons (cons str (cons Time ())) (cons " secs
109
- " ()))) ()))) (cons (cons stoutput ()) ()))) (cons Result ())))))))))))))) (true V890)))
111
+ " ()))) ()))) (cons (cons stoutput ()) ()))) (cons Result ())))))))))))))) (true V897)))
110
112
 
111
- (defun shen.tuple-up (V891) (cond ((cons? V891) (cons @p (cons (hd V891) (cons (shen.tuple-up (tl V891)) ())))) (true V891)))
113
+ (defun shen.tuple-up (V898) (cond ((cons? V898) (cons @p (cons (hd V898) (cons (shen.tuple-up (tl V898)) ())))) (true V898)))
112
114
 
113
- (defun shen.put/get-macro (V892) (cond ((and (cons? V892) (and (= put (hd V892)) (and (cons? (tl V892)) (and (cons? (tl (tl V892))) (and (cons? (tl (tl (tl V892)))) (= () (tl (tl (tl (tl V892)))))))))) (cons put (cons (hd (tl V892)) (cons (hd (tl (tl V892))) (cons (hd (tl (tl (tl V892)))) (cons (cons value (cons *property-vector* ())) ())))))) ((and (cons? V892) (and (= get (hd V892)) (and (cons? (tl V892)) (and (cons? (tl (tl V892))) (= () (tl (tl (tl V892)))))))) (cons get (cons (hd (tl V892)) (cons (hd (tl (tl V892))) (cons (cons value (cons *property-vector* ())) ()))))) (true V892)))
115
+ (defun shen.put/get-macro (V899) (cond ((and (cons? V899) (and (= put (hd V899)) (and (cons? (tl V899)) (and (cons? (tl (tl V899))) (and (cons? (tl (tl (tl V899)))) (= () (tl (tl (tl (tl V899)))))))))) (cons put (cons (hd (tl V899)) (cons (hd (tl (tl V899))) (cons (hd (tl (tl (tl V899)))) (cons (cons value (cons *property-vector* ())) ())))))) ((and (cons? V899) (and (= get (hd V899)) (and (cons? (tl V899)) (and (cons? (tl (tl V899))) (= () (tl (tl (tl V899)))))))) (cons get (cons (hd (tl V899)) (cons (hd (tl (tl V899))) (cons (cons value (cons *property-vector* ())) ()))))) (true V899)))
114
116
 
115
- (defun shen.function-macro (V893) (cond ((and (cons? V893) (and (= function (hd V893)) (and (cons? (tl V893)) (= () (tl (tl V893)))))) (shen.function-abstraction (hd (tl V893)) (arity (hd (tl V893))))) (true V893)))
117
+ (defun shen.function-macro (V900) (cond ((and (cons? V900) (and (= function (hd V900)) (and (cons? (tl V900)) (= () (tl (tl V900)))))) (shen.function-abstraction (hd (tl V900)) (arity (hd (tl V900))))) (true V900)))
116
118
 
117
- (defun shen.function-abstraction (V894 V895) (cond ((= 0 V895) (cons freeze (cons V894 ()))) ((= -1 V895) V894) (true (shen.function-abstraction-help V894 V895 ()))))
119
+ (defun shen.function-abstraction (V901 V902) (cond ((= 0 V902) (cons freeze (cons V901 ()))) ((= -1 V902) V901) (true (shen.function-abstraction-help V901 V902 ()))))
118
120
 
119
- (defun shen.function-abstraction-help (V896 V897 V898) (cond ((= 0 V897) (cons V896 V898)) (true (let X (gensym V) (cons /. (cons X (cons (shen.function-abstraction-help V896 (- V897 1) (append V898 (cons X ()))) ())))))))
121
+ (defun shen.function-abstraction-help (V903 V904 V905) (cond ((= 0 V904) (cons V903 V905)) (true (let X (gensym V) (cons /. (cons X (cons (shen.function-abstraction-help V903 (- V904 1) (append V905 (cons X ()))) ())))))))
120
122
 
121
- (defun undefmacro (V899) (do (set *macros* (remove V899 (value *macros*))) V899))
123
+ (defun undefmacro (V906) (do (set *macros* (remove V906 (value *macros*))) V906))
122
124
 
123
125
 
124
126
 
@@ -47,206 +47,206 @@
47
47
  * explains this license in full. *
48
48
  * *
49
49
  *****************************************************************************************
50
- "(defun shen.<defprolog> (V906) (let Result (let Parse_shen.<predicate*> (shen.<predicate*> V906) (if (not (= (fail) Parse_shen.<predicate*>)) (let Parse_shen.<clauses*> (shen.<clauses*> Parse_shen.<predicate*>) (if (not (= (fail) Parse_shen.<clauses*>)) (shen.pair (hd Parse_shen.<clauses*>) (hd (shen.prolog->shen (map (lambda Parse_X (shen.insert-predicate (shen.hdtl Parse_shen.<predicate*>) Parse_X)) (shen.hdtl Parse_shen.<clauses*>))))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
50
+ "(defun shen.<defprolog> (V913) (let Result (let Parse_shen.<predicate*> (shen.<predicate*> V913) (if (not (= (fail) Parse_shen.<predicate*>)) (let Parse_shen.<clauses*> (shen.<clauses*> Parse_shen.<predicate*>) (if (not (= (fail) Parse_shen.<clauses*>)) (shen.pair (hd Parse_shen.<clauses*>) (hd (shen.prolog->shen (map (lambda Parse_X (shen.insert-predicate (shen.hdtl Parse_shen.<predicate*>) Parse_X)) (shen.hdtl Parse_shen.<clauses*>))))) (fail))) (fail))) (if (= Result (fail)) (fail) Result)))
51
51
 
52
- (defun shen.prolog-error (V913 V914) (cond ((and (cons? V914) (and (cons? (tl V914)) (= () (tl (tl V914))))) (simple-error (cn "prolog syntax error in " (shen.app V913 (cn " here:
52
+ (defun shen.prolog-error (V920 V921) (cond ((and (cons? V921) (and (cons? (tl V921)) (= () (tl (tl V921))))) (simple-error (cn "prolog syntax error in " (shen.app V920 (cn " here:
53
53
 
54
- " (shen.app (shen.next-50 50 (hd V914)) "
55
- " shen.a)) shen.a)))) (true (simple-error (cn "prolog syntax error in " (shen.app V913 "
54
+ " (shen.app (shen.next-50 50 (hd V921)) "
55
+ " shen.a)) shen.a)))) (true (simple-error (cn "prolog syntax error in " (shen.app V920 "
56
56
  " shen.a))))))
57
57
 
58
- (defun shen.next-50 (V919 V920) (cond ((= () V920) "") ((= 0 V919) "") ((cons? V920) (cn (shen.decons-string (hd V920)) (shen.next-50 (- V919 1) (tl V920)))) (true (shen.sys-error shen.next-50))))
58
+ (defun shen.next-50 (V926 V927) (cond ((= () V927) "") ((= 0 V926) "") ((cons? V927) (cn (shen.decons-string (hd V927)) (shen.next-50 (- V926 1) (tl V927)))) (true (shen.sys-error shen.next-50))))
59
59
 
60
- (defun shen.decons-string (V921) (cond ((and (cons? V921) (and (= cons (hd V921)) (and (cons? (tl V921)) (and (cons? (tl (tl V921))) (= () (tl (tl (tl V921)))))))) (shen.app (shen.eval-cons V921) " " shen.s)) (true (shen.app V921 " " shen.r))))
60
+ (defun shen.decons-string (V928) (cond ((and (cons? V928) (and (= cons (hd V928)) (and (cons? (tl V928)) (and (cons? (tl (tl V928))) (= () (tl (tl (tl V928)))))))) (shen.app (shen.eval-cons V928) " " shen.s)) (true (shen.app V928 " " shen.r))))
61
61
 
62
- (defun shen.insert-predicate (V922 V923) (cond ((and (cons? V923) (and (cons? (tl V923)) (= () (tl (tl V923))))) (cons (cons V922 (hd V923)) (cons :- (tl V923)))) (true (shen.sys-error shen.insert-predicate))))
62
+ (defun shen.insert-predicate (V929 V930) (cond ((and (cons? V930) (and (cons? (tl V930)) (= () (tl (tl V930))))) (cons (cons V929 (hd V930)) (cons :- (tl V930)))) (true (shen.sys-error shen.insert-predicate))))
63
63
 
64
- (defun shen.<predicate*> (V928) (let Result (if (cons? (hd V928)) (let Parse_X (hd (hd V928)) (shen.pair (hd (shen.pair (tl (hd V928)) (shen.hdtl V928))) Parse_X)) (fail)) (if (= Result (fail)) (fail) Result)))
64
+ (defun shen.<predicate*> (V935) (let Result (if (cons? (hd V935)) (let Parse_X (hd (hd V935)) (shen.pair (hd (shen.pair (tl (hd V935)) (shen.hdtl V935))) Parse_X)) (fail)) (if (= Result (fail)) (fail) Result)))
65
65
 
66
- (defun shen.<clauses*> (V933) (let Result (let Parse_shen.<clause*> (shen.<clause*> V933) (if (not (= (fail) Parse_shen.<clause*>)) (let Parse_shen.<clauses*> (shen.<clauses*> Parse_shen.<clause*>) (if (not (= (fail) Parse_shen.<clauses*>)) (shen.pair (hd Parse_shen.<clauses*>) (cons (shen.hdtl Parse_shen.<clause*>) (shen.hdtl Parse_shen.<clauses*>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V933) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) (append (shen.hdtl Parse_<e>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
66
+ (defun shen.<clauses*> (V940) (let Result (let Parse_shen.<clause*> (shen.<clause*> V940) (if (not (= (fail) Parse_shen.<clause*>)) (let Parse_shen.<clauses*> (shen.<clauses*> Parse_shen.<clause*>) (if (not (= (fail) Parse_shen.<clauses*>)) (shen.pair (hd Parse_shen.<clauses*>) (cons (shen.hdtl Parse_shen.<clause*>) (shen.hdtl Parse_shen.<clauses*>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V940) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) (append (shen.hdtl Parse_<e>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
67
67
 
68
- (defun shen.<clause*> (V938) (let Result (let Parse_shen.<head*> (shen.<head*> V938) (if (not (= (fail) Parse_shen.<head*>)) (if (and (cons? (hd Parse_shen.<head*>)) (= <-- (hd (hd Parse_shen.<head*>)))) (let Parse_shen.<body*> (shen.<body*> (shen.pair (tl (hd Parse_shen.<head*>)) (shen.hdtl Parse_shen.<head*>))) (if (not (= (fail) Parse_shen.<body*>)) (let Parse_shen.<end*> (shen.<end*> Parse_shen.<body*>) (if (not (= (fail) Parse_shen.<end*>)) (shen.pair (hd Parse_shen.<end*>) (cons (shen.hdtl Parse_shen.<head*>) (cons (shen.hdtl Parse_shen.<body*>) ()))) (fail))) (fail))) (fail)) (fail))) (if (= Result (fail)) (fail) Result)))
68
+ (defun shen.<clause*> (V945) (let Result (let Parse_shen.<head*> (shen.<head*> V945) (if (not (= (fail) Parse_shen.<head*>)) (if (and (cons? (hd Parse_shen.<head*>)) (= <-- (hd (hd Parse_shen.<head*>)))) (let Parse_shen.<body*> (shen.<body*> (shen.pair (tl (hd Parse_shen.<head*>)) (shen.hdtl Parse_shen.<head*>))) (if (not (= (fail) Parse_shen.<body*>)) (let Parse_shen.<end*> (shen.<end*> Parse_shen.<body*>) (if (not (= (fail) Parse_shen.<end*>)) (shen.pair (hd Parse_shen.<end*>) (cons (shen.hdtl Parse_shen.<head*>) (cons (shen.hdtl Parse_shen.<body*>) ()))) (fail))) (fail))) (fail)) (fail))) (if (= Result (fail)) (fail) Result)))
69
69
 
70
- (defun shen.<head*> (V943) (let Result (let Parse_shen.<term*> (shen.<term*> V943) (if (not (= (fail) Parse_shen.<term*>)) (let Parse_shen.<head*> (shen.<head*> Parse_shen.<term*>) (if (not (= (fail) Parse_shen.<head*>)) (shen.pair (hd Parse_shen.<head*>) (cons (shen.hdtl Parse_shen.<term*>) (shen.hdtl Parse_shen.<head*>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V943) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) (append (shen.hdtl Parse_<e>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
70
+ (defun shen.<head*> (V950) (let Result (let Parse_shen.<term*> (shen.<term*> V950) (if (not (= (fail) Parse_shen.<term*>)) (let Parse_shen.<head*> (shen.<head*> Parse_shen.<term*>) (if (not (= (fail) Parse_shen.<head*>)) (shen.pair (hd Parse_shen.<head*>) (cons (shen.hdtl Parse_shen.<term*>) (shen.hdtl Parse_shen.<head*>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V950) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) (append (shen.hdtl Parse_<e>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
71
71
 
72
- (defun shen.<term*> (V948) (let Result (if (cons? (hd V948)) (let Parse_X (hd (hd V948)) (if (and (not (= <-- Parse_X)) (shen.legitimate-term? Parse_X)) (shen.pair (hd (shen.pair (tl (hd V948)) (shen.hdtl V948))) (shen.eval-cons Parse_X)) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
72
+ (defun shen.<term*> (V955) (let Result (if (cons? (hd V955)) (let Parse_X (hd (hd V955)) (if (and (not (= <-- Parse_X)) (shen.legitimate-term? Parse_X)) (shen.pair (hd (shen.pair (tl (hd V955)) (shen.hdtl V955))) (shen.eval-cons Parse_X)) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
73
73
 
74
- (defun shen.legitimate-term? (V953) (cond ((and (cons? V953) (and (= cons (hd V953)) (and (cons? (tl V953)) (and (cons? (tl (tl V953))) (= () (tl (tl (tl V953)))))))) (and (shen.legitimate-term? (hd (tl V953))) (shen.legitimate-term? (hd (tl (tl V953)))))) ((and (cons? V953) (and (= mode (hd V953)) (and (cons? (tl V953)) (and (cons? (tl (tl V953))) (and (= + (hd (tl (tl V953)))) (= () (tl (tl (tl V953))))))))) (shen.legitimate-term? (hd (tl V953)))) ((and (cons? V953) (and (= mode (hd V953)) (and (cons? (tl V953)) (and (cons? (tl (tl V953))) (and (= - (hd (tl (tl V953)))) (= () (tl (tl (tl V953))))))))) (shen.legitimate-term? (hd (tl V953)))) ((cons? V953) false) (true true)))
74
+ (defun shen.legitimate-term? (V960) (cond ((and (cons? V960) (and (= cons (hd V960)) (and (cons? (tl V960)) (and (cons? (tl (tl V960))) (= () (tl (tl (tl V960)))))))) (and (shen.legitimate-term? (hd (tl V960))) (shen.legitimate-term? (hd (tl (tl V960)))))) ((and (cons? V960) (and (= mode (hd V960)) (and (cons? (tl V960)) (and (cons? (tl (tl V960))) (and (= + (hd (tl (tl V960)))) (= () (tl (tl (tl V960))))))))) (shen.legitimate-term? (hd (tl V960)))) ((and (cons? V960) (and (= mode (hd V960)) (and (cons? (tl V960)) (and (cons? (tl (tl V960))) (and (= - (hd (tl (tl V960)))) (= () (tl (tl (tl V960))))))))) (shen.legitimate-term? (hd (tl V960)))) ((cons? V960) false) (true true)))
75
75
 
76
- (defun shen.eval-cons (V954) (cond ((and (cons? V954) (and (= cons (hd V954)) (and (cons? (tl V954)) (and (cons? (tl (tl V954))) (= () (tl (tl (tl V954)))))))) (cons (shen.eval-cons (hd (tl V954))) (shen.eval-cons (hd (tl (tl V954)))))) ((and (cons? V954) (and (= mode (hd V954)) (and (cons? (tl V954)) (and (cons? (tl (tl V954))) (= () (tl (tl (tl V954)))))))) (cons mode (cons (shen.eval-cons (hd (tl V954))) (tl (tl V954))))) (true V954)))
76
+ (defun shen.eval-cons (V961) (cond ((and (cons? V961) (and (= cons (hd V961)) (and (cons? (tl V961)) (and (cons? (tl (tl V961))) (= () (tl (tl (tl V961)))))))) (cons (shen.eval-cons (hd (tl V961))) (shen.eval-cons (hd (tl (tl V961)))))) ((and (cons? V961) (and (= mode (hd V961)) (and (cons? (tl V961)) (and (cons? (tl (tl V961))) (= () (tl (tl (tl V961)))))))) (cons mode (cons (shen.eval-cons (hd (tl V961))) (tl (tl V961))))) (true V961)))
77
77
 
78
- (defun shen.<body*> (V959) (let Result (let Parse_shen.<literal*> (shen.<literal*> V959) (if (not (= (fail) Parse_shen.<literal*>)) (let Parse_shen.<body*> (shen.<body*> Parse_shen.<literal*>) (if (not (= (fail) Parse_shen.<body*>)) (shen.pair (hd Parse_shen.<body*>) (cons (shen.hdtl Parse_shen.<literal*>) (shen.hdtl Parse_shen.<body*>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V959) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) (append (shen.hdtl Parse_<e>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
78
+ (defun shen.<body*> (V966) (let Result (let Parse_shen.<literal*> (shen.<literal*> V966) (if (not (= (fail) Parse_shen.<literal*>)) (let Parse_shen.<body*> (shen.<body*> Parse_shen.<literal*>) (if (not (= (fail) Parse_shen.<body*>)) (shen.pair (hd Parse_shen.<body*>) (cons (shen.hdtl Parse_shen.<literal*>) (shen.hdtl Parse_shen.<body*>))) (fail))) (fail))) (if (= Result (fail)) (let Result (let Parse_<e> (<e> V966) (if (not (= (fail) Parse_<e>)) (shen.pair (hd Parse_<e>) (append (shen.hdtl Parse_<e>) ())) (fail))) (if (= Result (fail)) (fail) Result)) Result)))
79
79
 
80
- (defun shen.<literal*> (V964) (let Result (if (and (cons? (hd V964)) (= ! (hd (hd V964)))) (shen.pair (hd (shen.pair (tl (hd V964)) (shen.hdtl V964))) (cons cut (cons (intern "Throwcontrol") ()))) (fail)) (if (= Result (fail)) (let Result (if (cons? (hd V964)) (let Parse_X (hd (hd V964)) (if (cons? Parse_X) (shen.pair (hd (shen.pair (tl (hd V964)) (shen.hdtl V964))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)) Result)))
80
+ (defun shen.<literal*> (V971) (let Result (if (and (cons? (hd V971)) (= ! (hd (hd V971)))) (shen.pair (hd (shen.pair (tl (hd V971)) (shen.hdtl V971))) (cons cut (cons (intern "Throwcontrol") ()))) (fail)) (if (= Result (fail)) (let Result (if (cons? (hd V971)) (let Parse_X (hd (hd V971)) (if (cons? Parse_X) (shen.pair (hd (shen.pair (tl (hd V971)) (shen.hdtl V971))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)) Result)))
81
81
 
82
- (defun shen.<end*> (V969) (let Result (if (cons? (hd V969)) (let Parse_X (hd (hd V969)) (if (= Parse_X ;) (shen.pair (hd (shen.pair (tl (hd V969)) (shen.hdtl V969))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
82
+ (defun shen.<end*> (V976) (let Result (if (cons? (hd V976)) (let Parse_X (hd (hd V976)) (if (= Parse_X ;) (shen.pair (hd (shen.pair (tl (hd V976)) (shen.hdtl V976))) Parse_X) (fail))) (fail)) (if (= Result (fail)) (fail) Result)))
83
83
 
84
- (defun cut (V970 V971 V972) (let Result (thaw V972) (if (= Result false) V970 Result)))
84
+ (defun cut (V977 V978 V979) (let Result (thaw V979) (if (= Result false) V977 Result)))
85
85
 
86
- (defun shen.insert_modes (V973) (cond ((and (cons? V973) (and (= mode (hd V973)) (and (cons? (tl V973)) (and (cons? (tl (tl V973))) (= () (tl (tl (tl V973)))))))) V973) ((= () V973) ()) ((cons? V973) (cons (cons mode (cons (hd V973) (cons + ()))) (cons mode (cons (shen.insert_modes (tl V973)) (cons - ()))))) (true V973)))
86
+ (defun shen.insert_modes (V980) (cond ((and (cons? V980) (and (= mode (hd V980)) (and (cons? (tl V980)) (and (cons? (tl (tl V980))) (= () (tl (tl (tl V980)))))))) V980) ((= () V980) ()) ((cons? V980) (cons (cons mode (cons (hd V980) (cons + ()))) (cons mode (cons (shen.insert_modes (tl V980)) (cons - ()))))) (true V980)))
87
87
 
88
- (defun shen.s-prolog (V974) (map (lambda V900 (eval V900)) (shen.prolog->shen V974)))
88
+ (defun shen.s-prolog (V981) (map (lambda V907 (eval V907)) (shen.prolog->shen V981)))
89
89
 
90
- (defun shen.prolog->shen (V975) (map shen.compile_prolog_procedure (shen.group_clauses (map shen.s-prolog_clause (mapcan shen.head_abstraction V975)))))
90
+ (defun shen.prolog->shen (V982) (map shen.compile_prolog_procedure (shen.group_clauses (map shen.s-prolog_clause (mapcan shen.head_abstraction V982)))))
91
91
 
92
- (defun shen.s-prolog_clause (V976) (cond ((and (cons? V976) (and (cons? (tl V976)) (and (= :- (hd (tl V976))) (and (cons? (tl (tl V976))) (= () (tl (tl (tl V976)))))))) (cons (hd V976) (cons :- (cons (map shen.s-prolog_literal (hd (tl (tl V976)))) ())))) (true (shen.sys-error shen.s-prolog_clause))))
92
+ (defun shen.s-prolog_clause (V983) (cond ((and (cons? V983) (and (cons? (tl V983)) (and (= :- (hd (tl V983))) (and (cons? (tl (tl V983))) (= () (tl (tl (tl V983)))))))) (cons (hd V983) (cons :- (cons (map shen.s-prolog_literal (hd (tl (tl V983)))) ())))) (true (shen.sys-error shen.s-prolog_clause))))
93
93
 
94
- (defun shen.head_abstraction (V977) (cond ((and (cons? V977) (and (cons? (tl V977)) (and (= :- (hd (tl V977))) (and (cons? (tl (tl V977))) (and (= () (tl (tl (tl V977)))) (< (shen.complexity_head (hd V977)) (value shen.*maxcomplexity*))))))) (cons V977 ())) ((and (cons? V977) (and (cons? (hd V977)) (and (cons? (tl V977)) (and (= :- (hd (tl V977))) (and (cons? (tl (tl V977))) (= () (tl (tl (tl V977))))))))) (let Terms (map (lambda Y (gensym V)) (tl (hd V977))) (let XTerms (shen.rcons_form (shen.remove_modes (tl (hd V977)))) (let Literal (cons unify (cons (shen.cons_form Terms) (cons XTerms ()))) (let Clause (cons (cons (hd (hd V977)) Terms) (cons :- (cons (cons Literal (hd (tl (tl V977)))) ()))) (cons Clause ())))))) (true (shen.sys-error shen.head_abstraction))))
94
+ (defun shen.head_abstraction (V984) (cond ((and (cons? V984) (and (cons? (tl V984)) (and (= :- (hd (tl V984))) (and (cons? (tl (tl V984))) (and (= () (tl (tl (tl V984)))) (< (shen.complexity_head (hd V984)) (value shen.*maxcomplexity*))))))) (cons V984 ())) ((and (cons? V984) (and (cons? (hd V984)) (and (cons? (tl V984)) (and (= :- (hd (tl V984))) (and (cons? (tl (tl V984))) (= () (tl (tl (tl V984))))))))) (let Terms (map (lambda Y (gensym V)) (tl (hd V984))) (let XTerms (shen.rcons_form (shen.remove_modes (tl (hd V984)))) (let Literal (cons unify (cons (shen.cons_form Terms) (cons XTerms ()))) (let Clause (cons (cons (hd (hd V984)) Terms) (cons :- (cons (cons Literal (hd (tl (tl V984)))) ()))) (cons Clause ())))))) (true (shen.sys-error shen.head_abstraction))))
95
95
 
96
- (defun shen.complexity_head (V982) (cond ((cons? V982) (shen.product (map shen.complexity (tl V982)))) (true (shen.sys-error shen.complexity_head))))
96
+ (defun shen.complexity_head (V989) (cond ((cons? V989) (shen.product (map shen.complexity (tl V989)))) (true (shen.sys-error shen.complexity_head))))
97
97
 
98
- (defun shen.complexity (V990) (cond ((and (cons? V990) (and (= mode (hd V990)) (and (cons? (tl V990)) (and (cons? (hd (tl V990))) (and (= mode (hd (hd (tl V990)))) (and (cons? (tl (hd (tl V990)))) (and (cons? (tl (tl (hd (tl V990))))) (and (= () (tl (tl (tl (hd (tl V990)))))) (and (cons? (tl (tl V990))) (= () (tl (tl (tl V990))))))))))))) (shen.complexity (hd (tl V990)))) ((and (cons? V990) (and (= mode (hd V990)) (and (cons? (tl V990)) (and (cons? (hd (tl V990))) (and (cons? (tl (tl V990))) (and (= + (hd (tl (tl V990)))) (= () (tl (tl (tl V990)))))))))) (* 2 (* (shen.complexity (cons mode (cons (hd (hd (tl V990))) (tl (tl V990))))) (shen.complexity (cons mode (cons (tl (hd (tl V990))) (tl (tl V990)))))))) ((and (cons? V990) (and (= mode (hd V990)) (and (cons? (tl V990)) (and (cons? (hd (tl V990))) (and (cons? (tl (tl V990))) (and (= - (hd (tl (tl V990)))) (= () (tl (tl (tl V990)))))))))) (* (shen.complexity (cons mode (cons (hd (hd (tl V990))) (tl (tl V990))))) (shen.complexity (cons mode (cons (tl (hd (tl V990))) (tl (tl V990))))))) ((and (cons? V990) (and (= mode (hd V990)) (and (cons? (tl V990)) (and (cons? (tl (tl V990))) (and (= () (tl (tl (tl V990)))) (variable? (hd (tl V990)))))))) 1) ((and (cons? V990) (and (= mode (hd V990)) (and (cons? (tl V990)) (and (cons? (tl (tl V990))) (and (= + (hd (tl (tl V990)))) (= () (tl (tl (tl V990))))))))) 2) ((and (cons? V990) (and (= mode (hd V990)) (and (cons? (tl V990)) (and (cons? (tl (tl V990))) (and (= - (hd (tl (tl V990)))) (= () (tl (tl (tl V990))))))))) 1) (true (shen.complexity (cons mode (cons V990 (cons + ())))))))
98
+ (defun shen.complexity (V997) (cond ((and (cons? V997) (and (= mode (hd V997)) (and (cons? (tl V997)) (and (cons? (hd (tl V997))) (and (= mode (hd (hd (tl V997)))) (and (cons? (tl (hd (tl V997)))) (and (cons? (tl (tl (hd (tl V997))))) (and (= () (tl (tl (tl (hd (tl V997)))))) (and (cons? (tl (tl V997))) (= () (tl (tl (tl V997))))))))))))) (shen.complexity (hd (tl V997)))) ((and (cons? V997) (and (= mode (hd V997)) (and (cons? (tl V997)) (and (cons? (hd (tl V997))) (and (cons? (tl (tl V997))) (and (= + (hd (tl (tl V997)))) (= () (tl (tl (tl V997)))))))))) (* 2 (* (shen.complexity (cons mode (cons (hd (hd (tl V997))) (tl (tl V997))))) (shen.complexity (cons mode (cons (tl (hd (tl V997))) (tl (tl V997)))))))) ((and (cons? V997) (and (= mode (hd V997)) (and (cons? (tl V997)) (and (cons? (hd (tl V997))) (and (cons? (tl (tl V997))) (and (= - (hd (tl (tl V997)))) (= () (tl (tl (tl V997)))))))))) (* (shen.complexity (cons mode (cons (hd (hd (tl V997))) (tl (tl V997))))) (shen.complexity (cons mode (cons (tl (hd (tl V997))) (tl (tl V997))))))) ((and (cons? V997) (and (= mode (hd V997)) (and (cons? (tl V997)) (and (cons? (tl (tl V997))) (and (= () (tl (tl (tl V997)))) (variable? (hd (tl V997)))))))) 1) ((and (cons? V997) (and (= mode (hd V997)) (and (cons? (tl V997)) (and (cons? (tl (tl V997))) (and (= + (hd (tl (tl V997)))) (= () (tl (tl (tl V997))))))))) 2) ((and (cons? V997) (and (= mode (hd V997)) (and (cons? (tl V997)) (and (cons? (tl (tl V997))) (and (= - (hd (tl (tl V997)))) (= () (tl (tl (tl V997))))))))) 1) (true (shen.complexity (cons mode (cons V997 (cons + ())))))))
99
99
 
100
- (defun shen.product (V991) (cond ((= () V991) 1) ((cons? V991) (* (hd V991) (shen.product (tl V991)))) (true (shen.sys-error shen.product))))
100
+ (defun shen.product (V998) (cond ((= () V998) 1) ((cons? V998) (* (hd V998) (shen.product (tl V998)))) (true (shen.sys-error shen.product))))
101
101
 
102
- (defun shen.s-prolog_literal (V992) (cond ((and (cons? V992) (and (= is (hd V992)) (and (cons? (tl V992)) (and (cons? (tl (tl V992))) (= () (tl (tl (tl V992)))))))) (cons bind (cons (hd (tl V992)) (cons (shen.insert_deref (hd (tl (tl V992)))) ())))) ((and (cons? V992) (and (= when (hd V992)) (and (cons? (tl V992)) (= () (tl (tl V992)))))) (cons fwhen (cons (shen.insert_deref (hd (tl V992))) ()))) ((and (cons? V992) (and (= bind (hd V992)) (and (cons? (tl V992)) (and (cons? (tl (tl V992))) (= () (tl (tl (tl V992)))))))) (cons bind (cons (hd (tl V992)) (cons (shen.insert_lazyderef (hd (tl (tl V992)))) ())))) ((and (cons? V992) (and (= fwhen (hd V992)) (and (cons? (tl V992)) (= () (tl (tl V992)))))) (cons fwhen (cons (shen.insert_lazyderef (hd (tl V992))) ()))) ((cons? V992) (cons (shen.m_prolog_to_s-prolog_predicate (hd V992)) (tl V992))) (true (shen.sys-error shen.s-prolog_literal))))
102
+ (defun shen.s-prolog_literal (V999) (cond ((and (cons? V999) (and (= is (hd V999)) (and (cons? (tl V999)) (and (cons? (tl (tl V999))) (= () (tl (tl (tl V999)))))))) (cons bind (cons (hd (tl V999)) (cons (shen.insert_deref (hd (tl (tl V999)))) ())))) ((and (cons? V999) (and (= when (hd V999)) (and (cons? (tl V999)) (= () (tl (tl V999)))))) (cons fwhen (cons (shen.insert_deref (hd (tl V999))) ()))) ((and (cons? V999) (and (= bind (hd V999)) (and (cons? (tl V999)) (and (cons? (tl (tl V999))) (= () (tl (tl (tl V999)))))))) (cons bind (cons (hd (tl V999)) (cons (shen.insert_lazyderef (hd (tl (tl V999)))) ())))) ((and (cons? V999) (and (= fwhen (hd V999)) (and (cons? (tl V999)) (= () (tl (tl V999)))))) (cons fwhen (cons (shen.insert_lazyderef (hd (tl V999))) ()))) ((cons? V999) (cons (shen.m_prolog_to_s-prolog_predicate (hd V999)) (tl V999))) (true (shen.sys-error shen.s-prolog_literal))))
103
103
 
104
- (defun shen.insert_deref (V993) (cond ((variable? V993) (cons shen.deref (cons V993 (cons ProcessN ())))) ((cons? V993) (cons (shen.insert_deref (hd V993)) (shen.insert_deref (tl V993)))) (true V993)))
104
+ (defun shen.insert_deref (V1000) (cond ((variable? V1000) (cons shen.deref (cons V1000 (cons ProcessN ())))) ((cons? V1000) (cons (shen.insert_deref (hd V1000)) (shen.insert_deref (tl V1000)))) (true V1000)))
105
105
 
106
- (defun shen.insert_lazyderef (V994) (cond ((variable? V994) (cons shen.lazyderef (cons V994 (cons ProcessN ())))) ((cons? V994) (cons (shen.insert_lazyderef (hd V994)) (shen.insert_lazyderef (tl V994)))) (true V994)))
106
+ (defun shen.insert_lazyderef (V1001) (cond ((variable? V1001) (cons shen.lazyderef (cons V1001 (cons ProcessN ())))) ((cons? V1001) (cons (shen.insert_lazyderef (hd V1001)) (shen.insert_lazyderef (tl V1001)))) (true V1001)))
107
107
 
108
- (defun shen.m_prolog_to_s-prolog_predicate (V995) (cond ((= = V995) unify) ((= =! V995) unify!) ((= == V995) identical) (true V995)))
108
+ (defun shen.m_prolog_to_s-prolog_predicate (V1002) (cond ((= = V1002) unify) ((= =! V1002) unify!) ((= == V1002) identical) (true V1002)))
109
109
 
110
- (defun shen.group_clauses (V996) (cond ((= () V996) ()) ((cons? V996) (let Group (shen.collect (lambda X (shen.same_predicate? (hd V996) X)) V996) (let Rest (difference V996 Group) (cons Group (shen.group_clauses Rest))))) (true (shen.sys-error shen.group_clauses))))
110
+ (defun shen.group_clauses (V1003) (cond ((= () V1003) ()) ((cons? V1003) (let Group (shen.collect (lambda X (shen.same_predicate? (hd V1003) X)) V1003) (let Rest (difference V1003 Group) (cons Group (shen.group_clauses Rest))))) (true (shen.sys-error shen.group_clauses))))
111
111
 
112
- (defun shen.collect (V999 V1000) (cond ((= () V1000) ()) ((cons? V1000) (if (V999 (hd V1000)) (cons (hd V1000) (shen.collect V999 (tl V1000))) (shen.collect V999 (tl V1000)))) (true (shen.sys-error shen.collect))))
112
+ (defun shen.collect (V1006 V1007) (cond ((= () V1007) ()) ((cons? V1007) (if (V1006 (hd V1007)) (cons (hd V1007) (shen.collect V1006 (tl V1007))) (shen.collect V1006 (tl V1007)))) (true (shen.sys-error shen.collect))))
113
113
 
114
- (defun shen.same_predicate? (V1017 V1018) (cond ((and (cons? V1017) (and (cons? (hd V1017)) (and (cons? V1018) (cons? (hd V1018))))) (= (hd (hd V1017)) (hd (hd V1018)))) (true (shen.sys-error shen.same_predicate?))))
114
+ (defun shen.same_predicate? (V1024 V1025) (cond ((and (cons? V1024) (and (cons? (hd V1024)) (and (cons? V1025) (cons? (hd V1025))))) (= (hd (hd V1024)) (hd (hd V1025)))) (true (shen.sys-error shen.same_predicate?))))
115
115
 
116
- (defun shen.compile_prolog_procedure (V1019) (let F (shen.procedure_name V1019) (let Shen (shen.clauses-to-shen F V1019) Shen)))
116
+ (defun shen.compile_prolog_procedure (V1026) (let F (shen.procedure_name V1026) (let Shen (shen.clauses-to-shen F V1026) Shen)))
117
117
 
118
- (defun shen.procedure_name (V1032) (cond ((and (cons? V1032) (and (cons? (hd V1032)) (cons? (hd (hd V1032))))) (hd (hd (hd V1032)))) (true (shen.sys-error shen.procedure_name))))
118
+ (defun shen.procedure_name (V1039) (cond ((and (cons? V1039) (and (cons? (hd V1039)) (cons? (hd (hd V1039))))) (hd (hd (hd V1039)))) (true (shen.sys-error shen.procedure_name))))
119
119
 
120
- (defun shen.clauses-to-shen (V1033 V1034) (let Linear (map shen.linearise-clause V1034) (let Arity (shen.prolog-aritycheck V1033 (map (lambda V901 (head V901)) V1034)) (let Parameters (shen.parameters Arity) (let AUM_instructions (map (lambda X (shen.aum X Parameters)) Linear) (let Code (shen.catch-cut (shen.nest-disjunct (map shen.aum_to_shen AUM_instructions))) (let ShenDef (cons define (cons V1033 (append Parameters (append (cons ProcessN (cons Continuation ())) (cons -> (cons Code ())))))) ShenDef)))))))
120
+ (defun shen.clauses-to-shen (V1040 V1041) (let Linear (map shen.linearise-clause V1041) (let Arity (shen.prolog-aritycheck V1040 (map (lambda V908 (head V908)) V1041)) (let Parameters (shen.parameters Arity) (let AUM_instructions (map (lambda X (shen.aum X Parameters)) Linear) (let Code (shen.catch-cut (shen.nest-disjunct (map shen.aum_to_shen AUM_instructions))) (let ShenDef (cons define (cons V1040 (append Parameters (append (cons ProcessN (cons Continuation ())) (cons -> (cons Code ())))))) ShenDef)))))))
121
121
 
122
- (defun shen.catch-cut (V1035) (cond ((not (shen.occurs? cut V1035)) V1035) (true (cons let (cons Throwcontrol (cons (cons shen.catchpoint ()) (cons (cons shen.cutpoint (cons Throwcontrol (cons V1035 ()))) ())))))))
122
+ (defun shen.catch-cut (V1042) (cond ((not (shen.occurs? cut V1042)) V1042) (true (cons let (cons Throwcontrol (cons (cons shen.catchpoint ()) (cons (cons shen.cutpoint (cons Throwcontrol (cons V1042 ()))) ())))))))
123
123
 
124
124
  (defun shen.catchpoint () (set shen.*catch* (+ 1 (value shen.*catch*))))
125
125
 
126
- (defun shen.cutpoint (V1040 V1041) (cond ((= V1041 V1040) false) (true V1041)))
126
+ (defun shen.cutpoint (V1047 V1048) (cond ((= V1048 V1047) false) (true V1048)))
127
127
 
128
- (defun shen.nest-disjunct (V1043) (cond ((and (cons? V1043) (= () (tl V1043))) (hd V1043)) ((cons? V1043) (shen.lisp-or (hd V1043) (shen.nest-disjunct (tl V1043)))) (true (shen.sys-error shen.nest-disjunct))))
128
+ (defun shen.nest-disjunct (V1050) (cond ((and (cons? V1050) (= () (tl V1050))) (hd V1050)) ((cons? V1050) (shen.lisp-or (hd V1050) (shen.nest-disjunct (tl V1050)))) (true (shen.sys-error shen.nest-disjunct))))
129
129
 
130
- (defun shen.lisp-or (V1044 V1045) (cons let (cons Case (cons V1044 (cons (cons if (cons (cons = (cons Case (cons false ()))) (cons V1045 (cons Case ())))) ())))))
130
+ (defun shen.lisp-or (V1051 V1052) (cons let (cons Case (cons V1051 (cons (cons if (cons (cons = (cons Case (cons false ()))) (cons V1052 (cons Case ())))) ())))))
131
131
 
132
- (defun shen.prolog-aritycheck (V1048 V1049) (cond ((and (cons? V1049) (= () (tl V1049))) (- (length (hd V1049)) 1)) ((and (cons? V1049) (cons? (tl V1049))) (if (= (length (hd V1049)) (length (hd (tl V1049)))) (shen.prolog-aritycheck V1048 (tl V1049)) (simple-error (cn "arity error in prolog procedure " (shen.app (cons V1048 ()) "
132
+ (defun shen.prolog-aritycheck (V1055 V1056) (cond ((and (cons? V1056) (= () (tl V1056))) (- (length (hd V1056)) 1)) ((and (cons? V1056) (cons? (tl V1056))) (if (= (length (hd V1056)) (length (hd (tl V1056)))) (shen.prolog-aritycheck V1055 (tl V1056)) (simple-error (cn "arity error in prolog procedure " (shen.app (cons V1055 ()) "
133
133
  " shen.a))))) (true (shen.sys-error shen.prolog-aritycheck))))
134
134
 
135
- (defun shen.linearise-clause (V1050) (cond ((and (cons? V1050) (and (cons? (tl V1050)) (and (= :- (hd (tl V1050))) (and (cons? (tl (tl V1050))) (= () (tl (tl (tl V1050)))))))) (let Linear (shen.linearise (cons (hd V1050) (tl (tl V1050)))) (shen.clause_form Linear))) (true (shen.sys-error shen.linearise-clause))))
135
+ (defun shen.linearise-clause (V1057) (cond ((and (cons? V1057) (and (cons? (tl V1057)) (and (= :- (hd (tl V1057))) (and (cons? (tl (tl V1057))) (= () (tl (tl (tl V1057)))))))) (let Linear (shen.linearise (cons (hd V1057) (tl (tl V1057)))) (shen.clause_form Linear))) (true (shen.sys-error shen.linearise-clause))))
136
136
 
137
- (defun shen.clause_form (V1051) (cond ((and (cons? V1051) (and (cons? (tl V1051)) (= () (tl (tl V1051))))) (cons (shen.explicit_modes (hd V1051)) (cons :- (cons (shen.cf_help (hd (tl V1051))) ())))) (true (shen.sys-error shen.clause_form))))
137
+ (defun shen.clause_form (V1058) (cond ((and (cons? V1058) (and (cons? (tl V1058)) (= () (tl (tl V1058))))) (cons (shen.explicit_modes (hd V1058)) (cons :- (cons (shen.cf_help (hd (tl V1058))) ())))) (true (shen.sys-error shen.clause_form))))
138
138
 
139
- (defun shen.explicit_modes (V1052) (cond ((cons? V1052) (cons (hd V1052) (map shen.em_help (tl V1052)))) (true (shen.sys-error shen.explicit_modes))))
139
+ (defun shen.explicit_modes (V1059) (cond ((cons? V1059) (cons (hd V1059) (map shen.em_help (tl V1059)))) (true (shen.sys-error shen.explicit_modes))))
140
140
 
141
- (defun shen.em_help (V1053) (cond ((and (cons? V1053) (and (= mode (hd V1053)) (and (cons? (tl V1053)) (and (cons? (tl (tl V1053))) (= () (tl (tl (tl V1053)))))))) V1053) (true (cons mode (cons V1053 (cons + ()))))))
141
+ (defun shen.em_help (V1060) (cond ((and (cons? V1060) (and (= mode (hd V1060)) (and (cons? (tl V1060)) (and (cons? (tl (tl V1060))) (= () (tl (tl (tl V1060)))))))) V1060) (true (cons mode (cons V1060 (cons + ()))))))
142
142
 
143
- (defun shen.cf_help (V1054) (cond ((and (cons? V1054) (and (= where (hd V1054)) (and (cons? (tl V1054)) (and (cons? (hd (tl V1054))) (and (= = (hd (hd (tl V1054)))) (and (cons? (tl (hd (tl V1054)))) (and (cons? (tl (tl (hd (tl V1054))))) (and (= () (tl (tl (tl (hd (tl V1054)))))) (and (cons? (tl (tl V1054))) (= () (tl (tl (tl V1054))))))))))))) (cons (cons (if (value shen.*occurs*) unify! unify) (tl (hd (tl V1054)))) (shen.cf_help (hd (tl (tl V1054)))))) (true V1054)))
143
+ (defun shen.cf_help (V1061) (cond ((and (cons? V1061) (and (= where (hd V1061)) (and (cons? (tl V1061)) (and (cons? (hd (tl V1061))) (and (= = (hd (hd (tl V1061)))) (and (cons? (tl (hd (tl V1061)))) (and (cons? (tl (tl (hd (tl V1061))))) (and (= () (tl (tl (tl (hd (tl V1061)))))) (and (cons? (tl (tl V1061))) (= () (tl (tl (tl V1061))))))))))))) (cons (cons (if (value shen.*occurs*) unify! unify) (tl (hd (tl V1061)))) (shen.cf_help (hd (tl (tl V1061)))))) (true V1061)))
144
144
 
145
- (defun occurs-check (V1059) (cond ((= + V1059) (set shen.*occurs* true)) ((= - V1059) (set shen.*occurs* false)) (true (simple-error "occurs-check expects + or -
145
+ (defun occurs-check (V1066) (cond ((= + V1066) (set shen.*occurs* true)) ((= - V1066) (set shen.*occurs* false)) (true (simple-error "occurs-check expects + or -
146
146
  "))))
147
147
 
148
- (defun shen.aum (V1060 V1061) (cond ((and (cons? V1060) (and (cons? (hd V1060)) (and (cons? (tl V1060)) (and (= :- (hd (tl V1060))) (and (cons? (tl (tl V1060))) (= () (tl (tl (tl V1060))))))))) (let MuApplication (shen.make_mu_application (cons shen.mu (cons (tl (hd V1060)) (cons (shen.continuation_call (tl (hd V1060)) (hd (tl (tl V1060)))) ()))) V1061) (shen.mu_reduction MuApplication +))) (true (shen.sys-error shen.aum))))
148
+ (defun shen.aum (V1067 V1068) (cond ((and (cons? V1067) (and (cons? (hd V1067)) (and (cons? (tl V1067)) (and (= :- (hd (tl V1067))) (and (cons? (tl (tl V1067))) (= () (tl (tl (tl V1067))))))))) (let MuApplication (shen.make_mu_application (cons shen.mu (cons (tl (hd V1067)) (cons (shen.continuation_call (tl (hd V1067)) (hd (tl (tl V1067)))) ()))) V1068) (shen.mu_reduction MuApplication +))) (true (shen.sys-error shen.aum))))
149
149
 
150
- (defun shen.continuation_call (V1062 V1063) (let VTerms (cons ProcessN (shen.extract_vars V1062)) (let VBody (shen.extract_vars V1063) (let Free (remove Throwcontrol (difference VBody VTerms)) (shen.cc_help Free V1063)))))
150
+ (defun shen.continuation_call (V1069 V1070) (let VTerms (cons ProcessN (shen.extract_vars V1069)) (let VBody (shen.extract_vars V1070) (let Free (remove Throwcontrol (difference VBody VTerms)) (shen.cc_help Free V1070)))))
151
151
 
152
- (defun remove (V1064 V1065) (shen.remove-h V1064 V1065 ()))
152
+ (defun remove (V1071 V1072) (shen.remove-h V1071 V1072 ()))
153
153
 
154
- (defun shen.remove-h (V1068 V1069 V1070) (cond ((= () V1069) (reverse V1070)) ((and (cons? V1069) (= (hd V1069) V1068)) (shen.remove-h (hd V1069) (tl V1069) V1070)) ((cons? V1069) (shen.remove-h V1068 (tl V1069) (cons (hd V1069) V1070))) (true (shen.sys-error shen.remove-h))))
154
+ (defun shen.remove-h (V1075 V1076 V1077) (cond ((= () V1076) (reverse V1077)) ((and (cons? V1076) (= (hd V1076) V1075)) (shen.remove-h (hd V1076) (tl V1076) V1077)) ((cons? V1076) (shen.remove-h V1075 (tl V1076) (cons (hd V1076) V1077))) (true (shen.sys-error shen.remove-h))))
155
155
 
156
- (defun shen.cc_help (V1072 V1073) (cond ((and (= () V1072) (= () V1073)) (cons shen.pop (cons shen.the (cons shen.stack ())))) ((= () V1073) (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons V1072 (cons and (cons shen.then (cons (cons shen.pop (cons shen.the (cons shen.stack ()))) ()))))))))) ((= () V1072) (cons call (cons shen.the (cons shen.continuation (cons V1073 ()))))) (true (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons V1072 (cons and (cons shen.then (cons (cons call (cons shen.the (cons shen.continuation (cons V1073 ())))) ())))))))))))
156
+ (defun shen.cc_help (V1079 V1080) (cond ((and (= () V1079) (= () V1080)) (cons shen.pop (cons shen.the (cons shen.stack ())))) ((= () V1080) (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons V1079 (cons and (cons shen.then (cons (cons shen.pop (cons shen.the (cons shen.stack ()))) ()))))))))) ((= () V1079) (cons call (cons shen.the (cons shen.continuation (cons V1080 ()))))) (true (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons V1079 (cons and (cons shen.then (cons (cons call (cons shen.the (cons shen.continuation (cons V1080 ())))) ())))))))))))
157
157
 
158
- (defun shen.make_mu_application (V1074 V1075) (cond ((and (cons? V1074) (and (= shen.mu (hd V1074)) (and (cons? (tl V1074)) (and (= () (hd (tl V1074))) (and (cons? (tl (tl V1074))) (and (= () (tl (tl (tl V1074)))) (= () V1075))))))) (hd (tl (tl V1074)))) ((and (cons? V1074) (and (= shen.mu (hd V1074)) (and (cons? (tl V1074)) (and (cons? (hd (tl V1074))) (and (cons? (tl (tl V1074))) (and (= () (tl (tl (tl V1074)))) (cons? V1075))))))) (cons (cons shen.mu (cons (hd (hd (tl V1074))) (cons (shen.make_mu_application (cons shen.mu (cons (tl (hd (tl V1074))) (tl (tl V1074)))) (tl V1075)) ()))) (cons (hd V1075) ()))) (true (shen.sys-error shen.make_mu_application))))
158
+ (defun shen.make_mu_application (V1081 V1082) (cond ((and (cons? V1081) (and (= shen.mu (hd V1081)) (and (cons? (tl V1081)) (and (= () (hd (tl V1081))) (and (cons? (tl (tl V1081))) (and (= () (tl (tl (tl V1081)))) (= () V1082))))))) (hd (tl (tl V1081)))) ((and (cons? V1081) (and (= shen.mu (hd V1081)) (and (cons? (tl V1081)) (and (cons? (hd (tl V1081))) (and (cons? (tl (tl V1081))) (and (= () (tl (tl (tl V1081)))) (cons? V1082))))))) (cons (cons shen.mu (cons (hd (hd (tl V1081))) (cons (shen.make_mu_application (cons shen.mu (cons (tl (hd (tl V1081))) (tl (tl V1081)))) (tl V1082)) ()))) (cons (hd V1082) ()))) (true (shen.sys-error shen.make_mu_application))))
159
159
 
160
- (defun shen.mu_reduction (V1082 V1083) (cond ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (hd (tl (hd V1082)))) (and (= mode (hd (hd (tl (hd V1082))))) (and (cons? (tl (hd (tl (hd V1082))))) (and (cons? (tl (tl (hd (tl (hd V1082)))))) (and (= () (tl (tl (tl (hd (tl (hd V1082))))))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (= () (tl (tl V1082))))))))))))))) (shen.mu_reduction (cons (cons shen.mu (cons (hd (tl (hd (tl (hd V1082))))) (tl (tl (hd V1082))))) (tl V1082)) (hd (tl (tl (hd (tl (hd V1082)))))))) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (= _ (hd (tl (hd V1082)))))))))))) (shen.mu_reduction (hd (tl (tl (hd V1082)))) V1083)) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (shen.ephemeral_variable? (hd (tl (hd V1082))) (hd (tl V1082))))))))))) (subst (hd (tl V1082)) (hd (tl (hd V1082))) (shen.mu_reduction (hd (tl (tl (hd V1082)))) V1083))) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (variable? (hd (tl (hd V1082)))))))))))) (cons let (cons (hd (tl (hd V1082))) (cons shen.be (cons (hd (tl V1082)) (cons in (cons (shen.mu_reduction (hd (tl (tl (hd V1082)))) V1083) ()))))))) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (and (= - V1083) (shen.prolog_constant? (hd (tl (hd V1082))))))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1082))))) (cons in (cons (cons if (cons (cons Z (cons is (cons identical (cons shen.to (cons (hd (tl (hd V1082))) ()))))) (cons shen.then (cons (shen.mu_reduction (hd (tl (tl (hd V1082)))) -) (cons shen.else (cons shen.failed! ())))))) ())))))))) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (and (= + V1083) (shen.prolog_constant? (hd (tl (hd V1082))))))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1082))))) (cons in (cons (cons if (cons (cons Z (cons is (cons identical (cons shen.to (cons (hd (tl (hd V1082))) ()))))) (cons shen.then (cons (shen.mu_reduction (hd (tl (tl (hd V1082)))) +) (cons shen.else (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.variable ())))) (cons shen.then (cons (cons bind (cons Z (cons shen.to (cons (hd (tl (hd V1082))) (cons in (cons (shen.mu_reduction (hd (tl (tl (hd V1082)))) +) ())))))) (cons shen.else (cons shen.failed! ())))))) ())))))) ())))))))) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (hd (tl (hd V1082)))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (= - V1083)))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1082))))) (cons in (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.non-empty (cons list ()))))) (cons shen.then (cons (shen.mu_reduction (cons (cons shen.mu (cons (hd (hd (tl (hd V1082)))) (cons (cons (cons shen.mu (cons (tl (hd (tl (hd V1082)))) (tl (tl (hd V1082))))) (cons (cons shen.the (cons tail (cons shen.of (cons Z ())))) ())) ()))) (cons (cons shen.the (cons head (cons shen.of (cons Z ())))) ())) -) (cons shen.else (cons shen.failed! ())))))) ())))))))) ((and (cons? V1082) (and (cons? (hd V1082)) (and (= shen.mu (hd (hd V1082))) (and (cons? (tl (hd V1082))) (and (cons? (hd (tl (hd V1082)))) (and (cons? (tl (tl (hd V1082)))) (and (= () (tl (tl (tl (hd V1082))))) (and (cons? (tl V1082)) (and (= () (tl (tl V1082))) (= + V1083)))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1082))))) (cons in (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.non-empty (cons list ()))))) (cons shen.then (cons (shen.mu_reduction (cons (cons shen.mu (cons (hd (hd (tl (hd V1082)))) (cons (cons (cons shen.mu (cons (tl (hd (tl (hd V1082)))) (tl (tl (hd V1082))))) (cons (cons shen.the (cons tail (cons shen.of (cons Z ())))) ())) ()))) (cons (cons shen.the (cons head (cons shen.of (cons Z ())))) ())) +) (cons shen.else (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.variable ())))) (cons shen.then (cons (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons (shen.extract_vars (hd (tl (hd V1082)))) (cons and (cons shen.then (cons (cons bind (cons Z (cons shen.to (cons (shen.rcons_form (shen.remove_modes (hd (tl (hd V1082))))) (cons in (cons (shen.mu_reduction (hd (tl (tl (hd V1082)))) +) ())))))) ())))))))) (cons shen.else (cons shen.failed! ())))))) ())))))) ())))))))) (true V1082)))
160
+ (defun shen.mu_reduction (V1089 V1090) (cond ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (hd (tl (hd V1089)))) (and (= mode (hd (hd (tl (hd V1089))))) (and (cons? (tl (hd (tl (hd V1089))))) (and (cons? (tl (tl (hd (tl (hd V1089)))))) (and (= () (tl (tl (tl (hd (tl (hd V1089))))))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (= () (tl (tl V1089))))))))))))))) (shen.mu_reduction (cons (cons shen.mu (cons (hd (tl (hd (tl (hd V1089))))) (tl (tl (hd V1089))))) (tl V1089)) (hd (tl (tl (hd (tl (hd V1089)))))))) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (= _ (hd (tl (hd V1089)))))))))))) (shen.mu_reduction (hd (tl (tl (hd V1089)))) V1090)) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (shen.ephemeral_variable? (hd (tl (hd V1089))) (hd (tl V1089))))))))))) (subst (hd (tl V1089)) (hd (tl (hd V1089))) (shen.mu_reduction (hd (tl (tl (hd V1089)))) V1090))) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (variable? (hd (tl (hd V1089)))))))))))) (cons let (cons (hd (tl (hd V1089))) (cons shen.be (cons (hd (tl V1089)) (cons in (cons (shen.mu_reduction (hd (tl (tl (hd V1089)))) V1090) ()))))))) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (and (= - V1090) (shen.prolog_constant? (hd (tl (hd V1089))))))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1089))))) (cons in (cons (cons if (cons (cons Z (cons is (cons identical (cons shen.to (cons (hd (tl (hd V1089))) ()))))) (cons shen.then (cons (shen.mu_reduction (hd (tl (tl (hd V1089)))) -) (cons shen.else (cons shen.failed! ())))))) ())))))))) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (and (= + V1090) (shen.prolog_constant? (hd (tl (hd V1089))))))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1089))))) (cons in (cons (cons if (cons (cons Z (cons is (cons identical (cons shen.to (cons (hd (tl (hd V1089))) ()))))) (cons shen.then (cons (shen.mu_reduction (hd (tl (tl (hd V1089)))) +) (cons shen.else (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.variable ())))) (cons shen.then (cons (cons bind (cons Z (cons shen.to (cons (hd (tl (hd V1089))) (cons in (cons (shen.mu_reduction (hd (tl (tl (hd V1089)))) +) ())))))) (cons shen.else (cons shen.failed! ())))))) ())))))) ())))))))) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (hd (tl (hd V1089)))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (= - V1090)))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1089))))) (cons in (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.non-empty (cons list ()))))) (cons shen.then (cons (shen.mu_reduction (cons (cons shen.mu (cons (hd (hd (tl (hd V1089)))) (cons (cons (cons shen.mu (cons (tl (hd (tl (hd V1089)))) (tl (tl (hd V1089))))) (cons (cons shen.the (cons tail (cons shen.of (cons Z ())))) ())) ()))) (cons (cons shen.the (cons head (cons shen.of (cons Z ())))) ())) -) (cons shen.else (cons shen.failed! ())))))) ())))))))) ((and (cons? V1089) (and (cons? (hd V1089)) (and (= shen.mu (hd (hd V1089))) (and (cons? (tl (hd V1089))) (and (cons? (hd (tl (hd V1089)))) (and (cons? (tl (tl (hd V1089)))) (and (= () (tl (tl (tl (hd V1089))))) (and (cons? (tl V1089)) (and (= () (tl (tl V1089))) (= + V1090)))))))))) (let Z (gensym V) (cons let (cons Z (cons shen.be (cons (cons shen.the (cons shen.result (cons shen.of (cons shen.dereferencing (tl V1089))))) (cons in (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.non-empty (cons list ()))))) (cons shen.then (cons (shen.mu_reduction (cons (cons shen.mu (cons (hd (hd (tl (hd V1089)))) (cons (cons (cons shen.mu (cons (tl (hd (tl (hd V1089)))) (tl (tl (hd V1089))))) (cons (cons shen.the (cons tail (cons shen.of (cons Z ())))) ())) ()))) (cons (cons shen.the (cons head (cons shen.of (cons Z ())))) ())) +) (cons shen.else (cons (cons if (cons (cons Z (cons is (cons shen.a (cons shen.variable ())))) (cons shen.then (cons (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons (shen.extract_vars (hd (tl (hd V1089)))) (cons and (cons shen.then (cons (cons bind (cons Z (cons shen.to (cons (shen.rcons_form (shen.remove_modes (hd (tl (hd V1089))))) (cons in (cons (shen.mu_reduction (hd (tl (tl (hd V1089)))) +) ())))))) ())))))))) (cons shen.else (cons shen.failed! ())))))) ())))))) ())))))))) (true V1089)))
161
161
 
162
- (defun shen.rcons_form (V1084) (cond ((cons? V1084) (cons cons (cons (shen.rcons_form (hd V1084)) (cons (shen.rcons_form (tl V1084)) ())))) (true V1084)))
162
+ (defun shen.rcons_form (V1091) (cond ((cons? V1091) (cons cons (cons (shen.rcons_form (hd V1091)) (cons (shen.rcons_form (tl V1091)) ())))) (true V1091)))
163
163
 
164
- (defun shen.remove_modes (V1085) (cond ((and (cons? V1085) (and (= mode (hd V1085)) (and (cons? (tl V1085)) (and (cons? (tl (tl V1085))) (and (= + (hd (tl (tl V1085)))) (= () (tl (tl (tl V1085))))))))) (shen.remove_modes (hd (tl V1085)))) ((and (cons? V1085) (and (= mode (hd V1085)) (and (cons? (tl V1085)) (and (cons? (tl (tl V1085))) (and (= - (hd (tl (tl V1085)))) (= () (tl (tl (tl V1085))))))))) (shen.remove_modes (hd (tl V1085)))) ((cons? V1085) (cons (shen.remove_modes (hd V1085)) (shen.remove_modes (tl V1085)))) (true V1085)))
164
+ (defun shen.remove_modes (V1092) (cond ((and (cons? V1092) (and (= mode (hd V1092)) (and (cons? (tl V1092)) (and (cons? (tl (tl V1092))) (and (= + (hd (tl (tl V1092)))) (= () (tl (tl (tl V1092))))))))) (shen.remove_modes (hd (tl V1092)))) ((and (cons? V1092) (and (= mode (hd V1092)) (and (cons? (tl V1092)) (and (cons? (tl (tl V1092))) (and (= - (hd (tl (tl V1092)))) (= () (tl (tl (tl V1092))))))))) (shen.remove_modes (hd (tl V1092)))) ((cons? V1092) (cons (shen.remove_modes (hd V1092)) (shen.remove_modes (tl V1092)))) (true V1092)))
165
165
 
166
- (defun shen.ephemeral_variable? (V1086 V1087) (and (variable? V1086) (variable? V1087)))
166
+ (defun shen.ephemeral_variable? (V1093 V1094) (and (variable? V1093) (variable? V1094)))
167
167
 
168
- (defun shen.prolog_constant? (V1096) (cond ((cons? V1096) false) (true true)))
168
+ (defun shen.prolog_constant? (V1103) (cond ((cons? V1103) false) (true true)))
169
169
 
170
- (defun shen.aum_to_shen (V1097) (cond ((and (cons? V1097) (and (= let (hd V1097)) (and (cons? (tl V1097)) (and (cons? (tl (tl V1097))) (and (= shen.be (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (cons? (tl (tl (tl (tl V1097))))) (and (= in (hd (tl (tl (tl (tl V1097)))))) (and (cons? (tl (tl (tl (tl (tl V1097)))))) (= () (tl (tl (tl (tl (tl (tl V1097)))))))))))))))) (cons let (cons (hd (tl V1097)) (cons (shen.aum_to_shen (hd (tl (tl (tl V1097))))) (cons (shen.aum_to_shen (hd (tl (tl (tl (tl (tl V1097))))))) ()))))) ((and (cons? V1097) (and (= shen.the (hd V1097)) (and (cons? (tl V1097)) (and (= shen.result (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.of (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (= shen.dereferencing (hd (tl (tl (tl V1097))))) (and (cons? (tl (tl (tl (tl V1097))))) (= () (tl (tl (tl (tl (tl V1097))))))))))))))) (cons shen.lazyderef (cons (shen.aum_to_shen (hd (tl (tl (tl (tl V1097)))))) (cons ProcessN ())))) ((and (cons? V1097) (and (= if (hd V1097)) (and (cons? (tl V1097)) (and (cons? (tl (tl V1097))) (and (= shen.then (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (cons? (tl (tl (tl (tl V1097))))) (and (= shen.else (hd (tl (tl (tl (tl V1097)))))) (and (cons? (tl (tl (tl (tl (tl V1097)))))) (= () (tl (tl (tl (tl (tl (tl V1097)))))))))))))))) (cons if (cons (shen.aum_to_shen (hd (tl V1097))) (cons (shen.aum_to_shen (hd (tl (tl (tl V1097))))) (cons (shen.aum_to_shen (hd (tl (tl (tl (tl (tl V1097))))))) ()))))) ((and (cons? V1097) (and (cons? (tl V1097)) (and (= is (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.a (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (= shen.variable (hd (tl (tl (tl V1097))))) (= () (tl (tl (tl (tl V1097)))))))))))) (cons shen.pvar? (cons (hd V1097) ()))) ((and (cons? V1097) (and (cons? (tl V1097)) (and (= is (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.a (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (= shen.non-empty (hd (tl (tl (tl V1097))))) (and (cons? (tl (tl (tl (tl V1097))))) (and (= list (hd (tl (tl (tl (tl V1097)))))) (= () (tl (tl (tl (tl (tl V1097))))))))))))))) (cons cons? (cons (hd V1097) ()))) ((and (cons? V1097) (and (= shen.rename (hd V1097)) (and (cons? (tl V1097)) (and (= shen.the (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.variables (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (= in (hd (tl (tl (tl V1097))))) (and (cons? (tl (tl (tl (tl V1097))))) (and (= () (hd (tl (tl (tl (tl V1097)))))) (and (cons? (tl (tl (tl (tl (tl V1097)))))) (and (= and (hd (tl (tl (tl (tl (tl V1097))))))) (and (cons? (tl (tl (tl (tl (tl (tl V1097))))))) (and (= shen.then (hd (tl (tl (tl (tl (tl (tl V1097)))))))) (and (cons? (tl (tl (tl (tl (tl (tl (tl V1097)))))))) (= () (tl (tl (tl (tl (tl (tl (tl (tl V1097)))))))))))))))))))))))) (shen.aum_to_shen (hd (tl (tl (tl (tl (tl (tl (tl V1097)))))))))) ((and (cons? V1097) (and (= shen.rename (hd V1097)) (and (cons? (tl V1097)) (and (= shen.the (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.variables (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (= in (hd (tl (tl (tl V1097))))) (and (cons? (tl (tl (tl (tl V1097))))) (and (cons? (hd (tl (tl (tl (tl V1097)))))) (and (cons? (tl (tl (tl (tl (tl V1097)))))) (and (= and (hd (tl (tl (tl (tl (tl V1097))))))) (and (cons? (tl (tl (tl (tl (tl (tl V1097))))))) (and (= shen.then (hd (tl (tl (tl (tl (tl (tl V1097)))))))) (and (cons? (tl (tl (tl (tl (tl (tl (tl V1097)))))))) (= () (tl (tl (tl (tl (tl (tl (tl (tl V1097)))))))))))))))))))))))) (cons let (cons (hd (hd (tl (tl (tl (tl V1097)))))) (cons (cons shen.newpv (cons ProcessN ())) (cons (shen.aum_to_shen (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons (tl (hd (tl (tl (tl (tl V1097)))))) (tl (tl (tl (tl (tl V1097))))))))))) ()))))) ((and (cons? V1097) (and (= bind (hd V1097)) (and (cons? (tl V1097)) (and (cons? (tl (tl V1097))) (and (= shen.to (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (cons? (tl (tl (tl (tl V1097))))) (and (= in (hd (tl (tl (tl (tl V1097)))))) (and (cons? (tl (tl (tl (tl (tl V1097)))))) (= () (tl (tl (tl (tl (tl (tl V1097)))))))))))))))) (cons do (cons (cons shen.bindv (cons (hd (tl V1097)) (cons (shen.chwild (hd (tl (tl (tl V1097))))) (cons ProcessN ())))) (cons (cons let (cons Result (cons (shen.aum_to_shen (hd (tl (tl (tl (tl (tl V1097))))))) (cons (cons do (cons (cons shen.unbindv (cons (hd (tl V1097)) (cons ProcessN ()))) (cons Result ()))) ())))) ())))) ((and (cons? V1097) (and (cons? (tl V1097)) (and (= is (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= identical (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (and (= shen.to (hd (tl (tl (tl V1097))))) (and (cons? (tl (tl (tl (tl V1097))))) (= () (tl (tl (tl (tl (tl V1097)))))))))))))) (cons = (cons (hd (tl (tl (tl (tl V1097))))) (cons (hd V1097) ())))) ((= shen.failed! V1097) false) ((and (cons? V1097) (and (= shen.the (hd V1097)) (and (cons? (tl V1097)) (and (= head (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.of (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (= () (tl (tl (tl (tl V1097)))))))))))) (cons hd (tl (tl (tl V1097))))) ((and (cons? V1097) (and (= shen.the (hd V1097)) (and (cons? (tl V1097)) (and (= tail (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.of (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (= () (tl (tl (tl (tl V1097)))))))))))) (cons tl (tl (tl (tl V1097))))) ((and (cons? V1097) (and (= shen.pop (hd V1097)) (and (cons? (tl V1097)) (and (= shen.the (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.stack (hd (tl (tl V1097)))) (= () (tl (tl (tl V1097)))))))))) (cons do (cons (cons shen.incinfs ()) (cons (cons thaw (cons Continuation ())) ())))) ((and (cons? V1097) (and (= call (hd V1097)) (and (cons? (tl V1097)) (and (= shen.the (hd (tl V1097))) (and (cons? (tl (tl V1097))) (and (= shen.continuation (hd (tl (tl V1097)))) (and (cons? (tl (tl (tl V1097)))) (= () (tl (tl (tl (tl V1097)))))))))))) (cons do (cons (cons shen.incinfs ()) (cons (shen.call_the_continuation (shen.chwild (hd (tl (tl (tl V1097))))) ProcessN Continuation) ())))) (true V1097)))
170
+ (defun shen.aum_to_shen (V1104) (cond ((and (cons? V1104) (and (= let (hd V1104)) (and (cons? (tl V1104)) (and (cons? (tl (tl V1104))) (and (= shen.be (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (cons? (tl (tl (tl (tl V1104))))) (and (= in (hd (tl (tl (tl (tl V1104)))))) (and (cons? (tl (tl (tl (tl (tl V1104)))))) (= () (tl (tl (tl (tl (tl (tl V1104)))))))))))))))) (cons let (cons (hd (tl V1104)) (cons (shen.aum_to_shen (hd (tl (tl (tl V1104))))) (cons (shen.aum_to_shen (hd (tl (tl (tl (tl (tl V1104))))))) ()))))) ((and (cons? V1104) (and (= shen.the (hd V1104)) (and (cons? (tl V1104)) (and (= shen.result (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.of (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (= shen.dereferencing (hd (tl (tl (tl V1104))))) (and (cons? (tl (tl (tl (tl V1104))))) (= () (tl (tl (tl (tl (tl V1104))))))))))))))) (cons shen.lazyderef (cons (shen.aum_to_shen (hd (tl (tl (tl (tl V1104)))))) (cons ProcessN ())))) ((and (cons? V1104) (and (= if (hd V1104)) (and (cons? (tl V1104)) (and (cons? (tl (tl V1104))) (and (= shen.then (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (cons? (tl (tl (tl (tl V1104))))) (and (= shen.else (hd (tl (tl (tl (tl V1104)))))) (and (cons? (tl (tl (tl (tl (tl V1104)))))) (= () (tl (tl (tl (tl (tl (tl V1104)))))))))))))))) (cons if (cons (shen.aum_to_shen (hd (tl V1104))) (cons (shen.aum_to_shen (hd (tl (tl (tl V1104))))) (cons (shen.aum_to_shen (hd (tl (tl (tl (tl (tl V1104))))))) ()))))) ((and (cons? V1104) (and (cons? (tl V1104)) (and (= is (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.a (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (= shen.variable (hd (tl (tl (tl V1104))))) (= () (tl (tl (tl (tl V1104)))))))))))) (cons shen.pvar? (cons (hd V1104) ()))) ((and (cons? V1104) (and (cons? (tl V1104)) (and (= is (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.a (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (= shen.non-empty (hd (tl (tl (tl V1104))))) (and (cons? (tl (tl (tl (tl V1104))))) (and (= list (hd (tl (tl (tl (tl V1104)))))) (= () (tl (tl (tl (tl (tl V1104))))))))))))))) (cons cons? (cons (hd V1104) ()))) ((and (cons? V1104) (and (= shen.rename (hd V1104)) (and (cons? (tl V1104)) (and (= shen.the (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.variables (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (= in (hd (tl (tl (tl V1104))))) (and (cons? (tl (tl (tl (tl V1104))))) (and (= () (hd (tl (tl (tl (tl V1104)))))) (and (cons? (tl (tl (tl (tl (tl V1104)))))) (and (= and (hd (tl (tl (tl (tl (tl V1104))))))) (and (cons? (tl (tl (tl (tl (tl (tl V1104))))))) (and (= shen.then (hd (tl (tl (tl (tl (tl (tl V1104)))))))) (and (cons? (tl (tl (tl (tl (tl (tl (tl V1104)))))))) (= () (tl (tl (tl (tl (tl (tl (tl (tl V1104)))))))))))))))))))))))) (shen.aum_to_shen (hd (tl (tl (tl (tl (tl (tl (tl V1104)))))))))) ((and (cons? V1104) (and (= shen.rename (hd V1104)) (and (cons? (tl V1104)) (and (= shen.the (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.variables (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (= in (hd (tl (tl (tl V1104))))) (and (cons? (tl (tl (tl (tl V1104))))) (and (cons? (hd (tl (tl (tl (tl V1104)))))) (and (cons? (tl (tl (tl (tl (tl V1104)))))) (and (= and (hd (tl (tl (tl (tl (tl V1104))))))) (and (cons? (tl (tl (tl (tl (tl (tl V1104))))))) (and (= shen.then (hd (tl (tl (tl (tl (tl (tl V1104)))))))) (and (cons? (tl (tl (tl (tl (tl (tl (tl V1104)))))))) (= () (tl (tl (tl (tl (tl (tl (tl (tl V1104)))))))))))))))))))))))) (cons let (cons (hd (hd (tl (tl (tl (tl V1104)))))) (cons (cons shen.newpv (cons ProcessN ())) (cons (shen.aum_to_shen (cons shen.rename (cons shen.the (cons shen.variables (cons in (cons (tl (hd (tl (tl (tl (tl V1104)))))) (tl (tl (tl (tl (tl V1104))))))))))) ()))))) ((and (cons? V1104) (and (= bind (hd V1104)) (and (cons? (tl V1104)) (and (cons? (tl (tl V1104))) (and (= shen.to (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (cons? (tl (tl (tl (tl V1104))))) (and (= in (hd (tl (tl (tl (tl V1104)))))) (and (cons? (tl (tl (tl (tl (tl V1104)))))) (= () (tl (tl (tl (tl (tl (tl V1104)))))))))))))))) (cons do (cons (cons shen.bindv (cons (hd (tl V1104)) (cons (shen.chwild (hd (tl (tl (tl V1104))))) (cons ProcessN ())))) (cons (cons let (cons Result (cons (shen.aum_to_shen (hd (tl (tl (tl (tl (tl V1104))))))) (cons (cons do (cons (cons shen.unbindv (cons (hd (tl V1104)) (cons ProcessN ()))) (cons Result ()))) ())))) ())))) ((and (cons? V1104) (and (cons? (tl V1104)) (and (= is (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= identical (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (and (= shen.to (hd (tl (tl (tl V1104))))) (and (cons? (tl (tl (tl (tl V1104))))) (= () (tl (tl (tl (tl (tl V1104)))))))))))))) (cons = (cons (hd (tl (tl (tl (tl V1104))))) (cons (hd V1104) ())))) ((= shen.failed! V1104) false) ((and (cons? V1104) (and (= shen.the (hd V1104)) (and (cons? (tl V1104)) (and (= head (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.of (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (= () (tl (tl (tl (tl V1104)))))))))))) (cons hd (tl (tl (tl V1104))))) ((and (cons? V1104) (and (= shen.the (hd V1104)) (and (cons? (tl V1104)) (and (= tail (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.of (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (= () (tl (tl (tl (tl V1104)))))))))))) (cons tl (tl (tl (tl V1104))))) ((and (cons? V1104) (and (= shen.pop (hd V1104)) (and (cons? (tl V1104)) (and (= shen.the (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.stack (hd (tl (tl V1104)))) (= () (tl (tl (tl V1104)))))))))) (cons do (cons (cons shen.incinfs ()) (cons (cons thaw (cons Continuation ())) ())))) ((and (cons? V1104) (and (= call (hd V1104)) (and (cons? (tl V1104)) (and (= shen.the (hd (tl V1104))) (and (cons? (tl (tl V1104))) (and (= shen.continuation (hd (tl (tl V1104)))) (and (cons? (tl (tl (tl V1104)))) (= () (tl (tl (tl (tl V1104)))))))))))) (cons do (cons (cons shen.incinfs ()) (cons (shen.call_the_continuation (shen.chwild (hd (tl (tl (tl V1104))))) ProcessN Continuation) ())))) (true V1104)))
171
171
 
172
- (defun shen.chwild (V1098) (cond ((= V1098 _) (cons shen.newpv (cons ProcessN ()))) ((cons? V1098) (map shen.chwild V1098)) (true V1098)))
172
+ (defun shen.chwild (V1105) (cond ((= V1105 _) (cons shen.newpv (cons ProcessN ()))) ((cons? V1105) (map shen.chwild V1105)) (true V1105)))
173
173
 
174
- (defun shen.newpv (V1099) (let Count+1 (+ (<-address (value shen.*varcounter*) V1099) 1) (let IncVar (address-> (value shen.*varcounter*) V1099 Count+1) (let Vector (<-address (value shen.*prologvectors*) V1099) (let ResizeVectorIfNeeded (if (= Count+1 (limit Vector)) (shen.resizeprocessvector V1099 Count+1) shen.skip) (shen.mk-pvar Count+1))))))
174
+ (defun shen.newpv (V1106) (let Count+1 (+ (<-address (value shen.*varcounter*) V1106) 1) (let IncVar (address-> (value shen.*varcounter*) V1106 Count+1) (let Vector (<-address (value shen.*prologvectors*) V1106) (let ResizeVectorIfNeeded (if (= Count+1 (limit Vector)) (shen.resizeprocessvector V1106 Count+1) shen.skip) (shen.mk-pvar Count+1))))))
175
175
 
176
- (defun shen.resizeprocessvector (V1100 V1101) (let Vector (<-address (value shen.*prologvectors*) V1100) (let BigVector (shen.resize-vector Vector (+ V1101 V1101) shen.-null-) (address-> (value shen.*prologvectors*) V1100 BigVector))))
176
+ (defun shen.resizeprocessvector (V1107 V1108) (let Vector (<-address (value shen.*prologvectors*) V1107) (let BigVector (shen.resize-vector Vector (+ V1108 V1108) shen.-null-) (address-> (value shen.*prologvectors*) V1107 BigVector))))
177
177
 
178
- (defun shen.resize-vector (V1102 V1103 V1104) (let BigVector (address-> (absvector (+ 1 V1103)) 0 V1103) (shen.copy-vector V1102 BigVector (limit V1102) V1103 V1104)))
178
+ (defun shen.resize-vector (V1109 V1110 V1111) (let BigVector (address-> (absvector (+ 1 V1110)) 0 V1110) (shen.copy-vector V1109 BigVector (limit V1109) V1110 V1111)))
179
179
 
180
- (defun shen.copy-vector (V1105 V1106 V1107 V1108 V1109) (shen.copy-vector-stage-2 (+ 1 V1107) (+ V1108 1) V1109 (shen.copy-vector-stage-1 1 V1105 V1106 (+ 1 V1107))))
180
+ (defun shen.copy-vector (V1112 V1113 V1114 V1115 V1116) (shen.copy-vector-stage-2 (+ 1 V1114) (+ V1115 1) V1116 (shen.copy-vector-stage-1 1 V1112 V1113 (+ 1 V1114))))
181
181
 
182
- (defun shen.copy-vector-stage-1 (V1112 V1113 V1114 V1115) (cond ((= V1115 V1112) V1114) (true (shen.copy-vector-stage-1 (+ 1 V1112) V1113 (address-> V1114 V1112 (<-address V1113 V1112)) V1115))))
182
+ (defun shen.copy-vector-stage-1 (V1119 V1120 V1121 V1122) (cond ((= V1122 V1119) V1121) (true (shen.copy-vector-stage-1 (+ 1 V1119) V1120 (address-> V1121 V1119 (<-address V1120 V1119)) V1122))))
183
183
 
184
- (defun shen.copy-vector-stage-2 (V1119 V1120 V1121 V1122) (cond ((= V1120 V1119) V1122) (true (shen.copy-vector-stage-2 (+ V1119 1) V1120 V1121 (address-> V1122 V1119 V1121)))))
184
+ (defun shen.copy-vector-stage-2 (V1126 V1127 V1128 V1129) (cond ((= V1127 V1126) V1129) (true (shen.copy-vector-stage-2 (+ V1126 1) V1127 V1128 (address-> V1129 V1126 V1128)))))
185
185
 
186
- (defun shen.mk-pvar (V1124) (address-> (address-> (absvector 2) 0 shen.pvar) 1 V1124))
186
+ (defun shen.mk-pvar (V1131) (address-> (address-> (absvector 2) 0 shen.pvar) 1 V1131))
187
187
 
188
- (defun shen.pvar? (V1125) (and (absvector? V1125) (= (<-address V1125 0) shen.pvar)))
188
+ (defun shen.pvar? (V1132) (and (absvector? V1132) (= (<-address V1132 0) shen.pvar)))
189
189
 
190
- (defun shen.bindv (V1126 V1127 V1128) (let Vector (<-address (value shen.*prologvectors*) V1128) (address-> Vector (<-address V1126 1) V1127)))
190
+ (defun shen.bindv (V1133 V1134 V1135) (let Vector (<-address (value shen.*prologvectors*) V1135) (address-> Vector (<-address V1133 1) V1134)))
191
191
 
192
- (defun shen.unbindv (V1129 V1130) (let Vector (<-address (value shen.*prologvectors*) V1130) (address-> Vector (<-address V1129 1) shen.-null-)))
192
+ (defun shen.unbindv (V1136 V1137) (let Vector (<-address (value shen.*prologvectors*) V1137) (address-> Vector (<-address V1136 1) shen.-null-)))
193
193
 
194
194
  (defun shen.incinfs () (set shen.*infs* (+ 1 (value shen.*infs*))))
195
195
 
196
- (defun shen.call_the_continuation (V1131 V1132 V1133) (cond ((and (cons? V1131) (and (cons? (hd V1131)) (= () (tl V1131)))) (cons (hd (hd V1131)) (append (tl (hd V1131)) (cons V1132 (cons V1133 ()))))) ((and (cons? V1131) (cons? (hd V1131))) (let NewContinuation (shen.newcontinuation (tl V1131) V1132 V1133) (cons (hd (hd V1131)) (append (tl (hd V1131)) (cons V1132 (cons NewContinuation ())))))) (true (shen.sys-error shen.call_the_continuation))))
196
+ (defun shen.call_the_continuation (V1138 V1139 V1140) (cond ((and (cons? V1138) (and (cons? (hd V1138)) (= () (tl V1138)))) (cons (hd (hd V1138)) (append (tl (hd V1138)) (cons V1139 (cons V1140 ()))))) ((and (cons? V1138) (cons? (hd V1138))) (let NewContinuation (shen.newcontinuation (tl V1138) V1139 V1140) (cons (hd (hd V1138)) (append (tl (hd V1138)) (cons V1139 (cons NewContinuation ())))))) (true (shen.sys-error shen.call_the_continuation))))
197
197
 
198
- (defun shen.newcontinuation (V1134 V1135 V1136) (cond ((= () V1134) V1136) ((and (cons? V1134) (cons? (hd V1134))) (cons freeze (cons (cons (hd (hd V1134)) (append (tl (hd V1134)) (cons V1135 (cons (shen.newcontinuation (tl V1134) V1135 V1136) ())))) ()))) (true (shen.sys-error shen.newcontinuation))))
198
+ (defun shen.newcontinuation (V1141 V1142 V1143) (cond ((= () V1141) V1143) ((and (cons? V1141) (cons? (hd V1141))) (cons freeze (cons (cons (hd (hd V1141)) (append (tl (hd V1141)) (cons V1142 (cons (shen.newcontinuation (tl V1141) V1142 V1143) ())))) ()))) (true (shen.sys-error shen.newcontinuation))))
199
199
 
200
- (defun return (V1141 V1142 V1143) (shen.deref V1141 V1142))
200
+ (defun return (V1148 V1149 V1150) (shen.deref V1148 V1149))
201
201
 
202
- (defun shen.measure&return (V1148 V1149 V1150) (do (shen.prhush (shen.app (value shen.*infs*) " inferences
203
- " shen.a) (stoutput)) (shen.deref V1148 V1149)))
202
+ (defun shen.measure&return (V1155 V1156 V1157) (do (shen.prhush (shen.app (value shen.*infs*) " inferences
203
+ " shen.a) (stoutput)) (shen.deref V1155 V1156)))
204
204
 
205
- (defun unify (V1151 V1152 V1153 V1154) (shen.lzy= (shen.lazyderef V1151 V1153) (shen.lazyderef V1152 V1153) V1153 V1154))
205
+ (defun unify (V1158 V1159 V1160 V1161) (shen.lzy= (shen.lazyderef V1158 V1160) (shen.lazyderef V1159 V1160) V1160 V1161))
206
206
 
207
- (defun shen.lzy= (V1171 V1172 V1173 V1174) (cond ((= V1172 V1171) (thaw V1174)) ((shen.pvar? V1171) (bind V1171 V1172 V1173 V1174)) ((shen.pvar? V1172) (bind V1172 V1171 V1173 V1174)) ((and (cons? V1171) (cons? V1172)) (shen.lzy= (shen.lazyderef (hd V1171) V1173) (shen.lazyderef (hd V1172) V1173) V1173 (freeze (shen.lzy= (shen.lazyderef (tl V1171) V1173) (shen.lazyderef (tl V1172) V1173) V1173 V1174)))) (true false)))
207
+ (defun shen.lzy= (V1178 V1179 V1180 V1181) (cond ((= V1179 V1178) (thaw V1181)) ((shen.pvar? V1178) (bind V1178 V1179 V1180 V1181)) ((shen.pvar? V1179) (bind V1179 V1178 V1180 V1181)) ((and (cons? V1178) (cons? V1179)) (shen.lzy= (shen.lazyderef (hd V1178) V1180) (shen.lazyderef (hd V1179) V1180) V1180 (freeze (shen.lzy= (shen.lazyderef (tl V1178) V1180) (shen.lazyderef (tl V1179) V1180) V1180 V1181)))) (true false)))
208
208
 
209
- (defun shen.deref (V1176 V1177) (cond ((cons? V1176) (cons (shen.deref (hd V1176) V1177) (shen.deref (tl V1176) V1177))) (true (if (shen.pvar? V1176) (let Value (shen.valvector V1176 V1177) (if (= Value shen.-null-) V1176 (shen.deref Value V1177))) V1176))))
209
+ (defun shen.deref (V1183 V1184) (cond ((cons? V1183) (cons (shen.deref (hd V1183) V1184) (shen.deref (tl V1183) V1184))) (true (if (shen.pvar? V1183) (let Value (shen.valvector V1183 V1184) (if (= Value shen.-null-) V1183 (shen.deref Value V1184))) V1183))))
210
210
 
211
- (defun shen.lazyderef (V1178 V1179) (if (shen.pvar? V1178) (let Value (shen.valvector V1178 V1179) (if (= Value shen.-null-) V1178 (shen.lazyderef Value V1179))) V1178))
211
+ (defun shen.lazyderef (V1185 V1186) (if (shen.pvar? V1185) (let Value (shen.valvector V1185 V1186) (if (= Value shen.-null-) V1185 (shen.lazyderef Value V1186))) V1185))
212
212
 
213
- (defun shen.valvector (V1180 V1181) (<-address (<-address (value shen.*prologvectors*) V1181) (<-address V1180 1)))
213
+ (defun shen.valvector (V1187 V1188) (<-address (<-address (value shen.*prologvectors*) V1188) (<-address V1187 1)))
214
214
 
215
- (defun unify! (V1182 V1183 V1184 V1185) (shen.lzy=! (shen.lazyderef V1182 V1184) (shen.lazyderef V1183 V1184) V1184 V1185))
215
+ (defun unify! (V1189 V1190 V1191 V1192) (shen.lzy=! (shen.lazyderef V1189 V1191) (shen.lazyderef V1190 V1191) V1191 V1192))
216
216
 
217
- (defun shen.lzy=! (V1202 V1203 V1204 V1205) (cond ((= V1203 V1202) (thaw V1205)) ((and (shen.pvar? V1202) (not (shen.occurs? V1202 (shen.deref V1203 V1204)))) (bind V1202 V1203 V1204 V1205)) ((and (shen.pvar? V1203) (not (shen.occurs? V1203 (shen.deref V1202 V1204)))) (bind V1203 V1202 V1204 V1205)) ((and (cons? V1202) (cons? V1203)) (shen.lzy=! (shen.lazyderef (hd V1202) V1204) (shen.lazyderef (hd V1203) V1204) V1204 (freeze (shen.lzy=! (shen.lazyderef (tl V1202) V1204) (shen.lazyderef (tl V1203) V1204) V1204 V1205)))) (true false)))
217
+ (defun shen.lzy=! (V1209 V1210 V1211 V1212) (cond ((= V1210 V1209) (thaw V1212)) ((and (shen.pvar? V1209) (not (shen.occurs? V1209 (shen.deref V1210 V1211)))) (bind V1209 V1210 V1211 V1212)) ((and (shen.pvar? V1210) (not (shen.occurs? V1210 (shen.deref V1209 V1211)))) (bind V1210 V1209 V1211 V1212)) ((and (cons? V1209) (cons? V1210)) (shen.lzy=! (shen.lazyderef (hd V1209) V1211) (shen.lazyderef (hd V1210) V1211) V1211 (freeze (shen.lzy=! (shen.lazyderef (tl V1209) V1211) (shen.lazyderef (tl V1210) V1211) V1211 V1212)))) (true false)))
218
218
 
219
- (defun shen.occurs? (V1215 V1216) (cond ((= V1216 V1215) true) ((cons? V1216) (or (shen.occurs? V1215 (hd V1216)) (shen.occurs? V1215 (tl V1216)))) (true false)))
219
+ (defun shen.occurs? (V1222 V1223) (cond ((= V1223 V1222) true) ((cons? V1223) (or (shen.occurs? V1222 (hd V1223)) (shen.occurs? V1222 (tl V1223)))) (true false)))
220
220
 
221
- (defun identical (V1218 V1219 V1220 V1221) (shen.lzy== (shen.lazyderef V1218 V1220) (shen.lazyderef V1219 V1220) V1220 V1221))
221
+ (defun identical (V1225 V1226 V1227 V1228) (shen.lzy== (shen.lazyderef V1225 V1227) (shen.lazyderef V1226 V1227) V1227 V1228))
222
222
 
223
- (defun shen.lzy== (V1238 V1239 V1240 V1241) (cond ((= V1239 V1238) (thaw V1241)) ((and (cons? V1238) (cons? V1239)) (shen.lzy== (shen.lazyderef (hd V1238) V1240) (shen.lazyderef (hd V1239) V1240) V1240 (freeze (shen.lzy== (tl V1238) (tl V1239) V1240 V1241)))) (true false)))
223
+ (defun shen.lzy== (V1245 V1246 V1247 V1248) (cond ((= V1246 V1245) (thaw V1248)) ((and (cons? V1245) (cons? V1246)) (shen.lzy== (shen.lazyderef (hd V1245) V1247) (shen.lazyderef (hd V1246) V1247) V1247 (freeze (shen.lzy== (tl V1245) (tl V1246) V1247 V1248)))) (true false)))
224
224
 
225
- (defun shen.pvar (V1243) (cn "Var" (shen.app (<-address V1243 1) "" shen.a)))
225
+ (defun shen.pvar (V1250) (cn "Var" (shen.app (<-address V1250 1) "" shen.a)))
226
226
 
227
- (defun bind (V1244 V1245 V1246 V1247) (do (shen.bindv V1244 V1245 V1246) (let Result (thaw V1247) (do (shen.unbindv V1244 V1246) Result))))
227
+ (defun bind (V1251 V1252 V1253 V1254) (do (shen.bindv V1251 V1252 V1253) (let Result (thaw V1254) (do (shen.unbindv V1251 V1253) Result))))
228
228
 
229
- (defun fwhen (V1262 V1263 V1264) (cond ((= true V1262) (thaw V1264)) ((= false V1262) false) (true (simple-error (cn "fwhen expects a boolean: not " (shen.app V1262 "%" shen.s))))))
229
+ (defun fwhen (V1269 V1270 V1271) (cond ((= true V1269) (thaw V1271)) ((= false V1269) false) (true (simple-error (cn "fwhen expects a boolean: not " (shen.app V1269 "%" shen.s))))))
230
230
 
231
- (defun call (V1277 V1278 V1279) (cond ((cons? V1277) (shen.call-help (shen.m_prolog_to_s-prolog_predicate (shen.lazyderef (hd V1277) V1278)) (tl V1277) V1278 V1279)) (true false)))
231
+ (defun call (V1284 V1285 V1286) (cond ((cons? V1284) (shen.call-help (shen.m_prolog_to_s-prolog_predicate (shen.lazyderef (hd V1284) V1285)) (tl V1284) V1285 V1286)) (true false)))
232
232
 
233
- (defun shen.call-help (V1280 V1281 V1282 V1283) (cond ((= () V1281) (V1280 V1282 V1283)) ((cons? V1281) (shen.call-help (V1280 (hd V1281)) (tl V1281) V1282 V1283)) (true (shen.sys-error shen.call-help))))
233
+ (defun shen.call-help (V1287 V1288 V1289 V1290) (cond ((= () V1288) (V1287 V1289 V1290)) ((cons? V1288) (shen.call-help (V1287 (hd V1288)) (tl V1288) V1289 V1290)) (true (shen.sys-error shen.call-help))))
234
234
 
235
- (defun shen.intprolog (V1284) (cond ((and (cons? V1284) (cons? (hd V1284))) (let ProcessN (shen.start-new-prolog-process) (shen.intprolog-help (hd (hd V1284)) (shen.insert-prolog-variables (cons (tl (hd V1284)) (cons (tl V1284) ())) ProcessN) ProcessN))) (true (shen.sys-error shen.intprolog))))
235
+ (defun shen.intprolog (V1291) (cond ((and (cons? V1291) (cons? (hd V1291))) (let ProcessN (shen.start-new-prolog-process) (shen.intprolog-help (hd (hd V1291)) (shen.insert-prolog-variables (cons (tl (hd V1291)) (cons (tl V1291) ())) ProcessN) ProcessN))) (true (shen.sys-error shen.intprolog))))
236
236
 
237
- (defun shen.intprolog-help (V1285 V1286 V1287) (cond ((and (cons? V1286) (and (cons? (tl V1286)) (= () (tl (tl V1286))))) (shen.intprolog-help-help V1285 (hd V1286) (hd (tl V1286)) V1287)) (true (shen.sys-error shen.intprolog-help))))
237
+ (defun shen.intprolog-help (V1292 V1293 V1294) (cond ((and (cons? V1293) (and (cons? (tl V1293)) (= () (tl (tl V1293))))) (shen.intprolog-help-help V1292 (hd V1293) (hd (tl V1293)) V1294)) (true (shen.sys-error shen.intprolog-help))))
238
238
 
239
- (defun shen.intprolog-help-help (V1288 V1289 V1290 V1291) (cond ((= () V1289) (V1288 V1291 (freeze (shen.call-rest V1290 V1291)))) ((cons? V1289) (shen.intprolog-help-help (V1288 (hd V1289)) (tl V1289) V1290 V1291)) (true (shen.sys-error shen.intprolog-help-help))))
239
+ (defun shen.intprolog-help-help (V1295 V1296 V1297 V1298) (cond ((= () V1296) (V1295 V1298 (freeze (shen.call-rest V1297 V1298)))) ((cons? V1296) (shen.intprolog-help-help (V1295 (hd V1296)) (tl V1296) V1297 V1298)) (true (shen.sys-error shen.intprolog-help-help))))
240
240
 
241
- (defun shen.call-rest (V1294 V1295) (cond ((= () V1294) true) ((and (cons? V1294) (and (cons? (hd V1294)) (cons? (tl (hd V1294))))) (shen.call-rest (cons (cons ((hd (hd V1294)) (hd (tl (hd V1294)))) (tl (tl (hd V1294)))) (tl V1294)) V1295)) ((and (cons? V1294) (and (cons? (hd V1294)) (= () (tl (hd V1294))))) ((hd (hd V1294)) V1295 (freeze (shen.call-rest (tl V1294) V1295)))) (true (shen.sys-error shen.call-rest))))
241
+ (defun shen.call-rest (V1301 V1302) (cond ((= () V1301) true) ((and (cons? V1301) (and (cons? (hd V1301)) (cons? (tl (hd V1301))))) (shen.call-rest (cons (cons ((hd (hd V1301)) (hd (tl (hd V1301)))) (tl (tl (hd V1301)))) (tl V1301)) V1302)) ((and (cons? V1301) (and (cons? (hd V1301)) (= () (tl (hd V1301))))) ((hd (hd V1301)) V1302 (freeze (shen.call-rest (tl V1301) V1302)))) (true (shen.sys-error shen.call-rest))))
242
242
 
243
243
  (defun shen.start-new-prolog-process () (let IncrementProcessCounter (set shen.*process-counter* (+ 1 (value shen.*process-counter*))) (shen.initialise-prolog IncrementProcessCounter)))
244
244
 
245
- (defun shen.insert-prolog-variables (V1296 V1297) (shen.insert-prolog-variables-help V1296 (shen.flatten V1296) V1297))
245
+ (defun shen.insert-prolog-variables (V1303 V1304) (shen.insert-prolog-variables-help V1303 (shen.flatten V1303) V1304))
246
246
 
247
- (defun shen.insert-prolog-variables-help (V1302 V1303 V1304) (cond ((= () V1303) V1302) ((and (cons? V1303) (variable? (hd V1303))) (let V (shen.newpv V1304) (let XV/Y (subst V (hd V1303) V1302) (let Z-Y (remove (hd V1303) (tl V1303)) (shen.insert-prolog-variables-help XV/Y Z-Y V1304))))) ((cons? V1303) (shen.insert-prolog-variables-help V1302 (tl V1303) V1304)) (true (shen.sys-error shen.insert-prolog-variables-help))))
247
+ (defun shen.insert-prolog-variables-help (V1309 V1310 V1311) (cond ((= () V1310) V1309) ((and (cons? V1310) (variable? (hd V1310))) (let V (shen.newpv V1311) (let XV/Y (subst V (hd V1310) V1309) (let Z-Y (remove (hd V1310) (tl V1310)) (shen.insert-prolog-variables-help XV/Y Z-Y V1311))))) ((cons? V1310) (shen.insert-prolog-variables-help V1309 (tl V1310) V1311)) (true (shen.sys-error shen.insert-prolog-variables-help))))
248
248
 
249
- (defun shen.initialise-prolog (V1305) (let Vector (address-> (value shen.*prologvectors*) V1305 (shen.fillvector (vector 10) 1 10 shen.-null-)) (let Counter (address-> (value shen.*varcounter*) V1305 1) V1305)))
249
+ (defun shen.initialise-prolog (V1312) (let Vector (address-> (value shen.*prologvectors*) V1312 (shen.fillvector (vector 10) 1 10 shen.-null-)) (let Counter (address-> (value shen.*varcounter*) V1312 1) V1312)))
250
250
 
251
251
 
252
252