drainage/flow-world-nr now works; drainage/flow-world still doesn't

This commit is contained in:
Simon Brooke 2024-04-06 09:41:52 +01:00
parent 93dab8067b
commit e19ce2e5f7
17 changed files with 1540 additions and 815 deletions

View file

@ -17,10 +17,10 @@
004   mw-engine.utils
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;(:require
005&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[clojure.math.combinatorics&nbsp;:as&nbsp;combo]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.math.combinatorics&nbsp;:as&nbsp;combo]))
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.string&nbsp;:refer&nbsp;[join]]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
007&nbsp;&nbsp;
@ -101,7 +101,7 @@
032&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;&#x27;true&#x27;&nbsp;if&nbsp;elt&nbsp;is&nbsp;a&nbsp;member&nbsp;of&nbsp;col,&nbsp;else&nbsp;&#x27;false&#x27;.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;[elt&nbsp;col]&nbsp;
033&nbsp;&nbsp;&nbsp;&nbsp;[elt&nbsp;col]
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
034&nbsp;&nbsp;&nbsp;&nbsp;(contains?&nbsp;(set&nbsp;col)&nbsp;elt))
@ -124,7 +124,7 @@
<span class="covered" title="4 out of 4 forms covered">
040&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[value&nbsp;(map&nbsp;property)]
</span><br/>
<span class="partial" title="5 out of 6 forms covered">
<span class="covered" title="6 out of 6 forms covered">
041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(integer?&nbsp;value)&nbsp;value&nbsp;0)))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
@ -424,8 +424,8 @@
<span class="blank" title="0 out of 0 forms covered">
140&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
141&nbsp;&nbsp;(defn&nbsp;get-num
<span class="covered" title="136 out of 136 forms covered">
141&nbsp;&nbsp;(defmacro&nbsp;get-num
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
142&nbsp;&nbsp;&nbsp;&nbsp;&quot;Get&nbsp;the&nbsp;value&nbsp;of&nbsp;a&nbsp;property&nbsp;expected&nbsp;to&nbsp;be&nbsp;a&nbsp;number&nbsp;from&nbsp;a&nbsp;map;&nbsp;if&nbsp;not
@ -445,20 +445,20 @@
<span class="not-tracked" title="0 out of 0 forms covered">
147&nbsp;&nbsp;&nbsp;&nbsp;[map&nbsp;key]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
148&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(map?&nbsp;map)
<span class="covered" title="1 out of 1 forms covered">
148&nbsp;&nbsp;&nbsp;&nbsp;`(if&nbsp;(map?&nbsp;~map)
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[v&nbsp;(map&nbsp;key)]
</span><br/>
<span class="covered" title="12 out of 12 forms covered">
150&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(and&nbsp;v&nbsp;(number?&nbsp;v))&nbsp;v
<span class="covered" title="2 out of 2 forms covered">
149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[~&#x27;v&nbsp;(~map&nbsp;~key)]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
151&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;0))
150&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(and&nbsp;~&#x27;v&nbsp;(number?&nbsp;~&#x27;v))&nbsp;~&#x27;v
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
152&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(throw&nbsp;(Exception.&nbsp;&quot;No&nbsp;map&nbsp;passed?&quot;))))
<span class="not-tracked" title="0 out of 0 forms covered">
151&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;0))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
152&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(throw&nbsp;(Exception.&nbsp;&quot;No&nbsp;map&nbsp;passed?&quot;))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
153&nbsp;&nbsp;
@ -907,5 +907,239 @@
<span class="covered" title="1 out of 1 forms covered">
301&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;world))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
302&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
303&nbsp;&nbsp;(defn&nbsp;rule-type
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
304&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;the&nbsp;rule-type&nbsp;of&nbsp;this&nbsp;compiled&nbsp;`rule`.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
305&nbsp;&nbsp;&nbsp;&nbsp;[rule]
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
306&nbsp;&nbsp;&nbsp;&nbsp;(:rule-type&nbsp;(meta&nbsp;rule)))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
307&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
308&nbsp;&nbsp;(defn&nbsp;add-history-event
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
309&nbsp;&nbsp;&nbsp;&nbsp;&quot;If&nbsp;`cell`&nbsp;is&nbsp;non-nil,&nbsp;expect&nbsp;it&nbsp;to&nbsp;be&nbsp;a&nbsp;map&nbsp;representing&nbsp;a&nbsp;cell;&nbsp;add
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
310&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;its&nbsp;history&nbsp;an&nbsp;an&nbsp;event&nbsp;recording&nbsp;the&nbsp;firing&nbsp;of&nbsp;this&nbsp;rule.&nbsp;If
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
311&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`detail`&nbsp;is&nbsp;passed,&nbsp;treat&nbsp;it&nbsp;as&nbsp;a&nbsp;map&nbsp;of&nbsp;additional&nbsp;data&nbsp;to&nbsp;be
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
312&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;added&nbsp;to&nbsp;the&nbsp;event.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
313&nbsp;&nbsp;&nbsp;&nbsp;([cell&nbsp;rule]
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
314&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when&nbsp;cell&nbsp;(add-history-event&nbsp;cell&nbsp;rule&nbsp;{})))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
315&nbsp;&nbsp;&nbsp;&nbsp;([result&nbsp;rule&nbsp;detail]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
316&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when&nbsp;result
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[rule-meta&nbsp;(meta&nbsp;rule)
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
318&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event&nbsp;{:rule&nbsp;(:source&nbsp;rule-meta)
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
319&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:rule-type&nbsp;(:rule-type&nbsp;rule-meta)
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:generation&nbsp;(get-int-or-zero
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
322&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:generation)}
</span><br/>
<span class="partial" title="6 out of 7 forms covered">
323&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event&#x27;&nbsp;(if&nbsp;detail&nbsp;(merge&nbsp;event&nbsp;detail)&nbsp;event)]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
324&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(merge&nbsp;result
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
325&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{:history&nbsp;(concat
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
326&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:history&nbsp;result)
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
327&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;event&#x27;))})))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
328&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
329&nbsp;&nbsp;(defn-&nbsp;event-narrative&nbsp;[event]
</span><br/>
<span class="not-covered" title="0 out of 11 forms covered">
330&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;(:rule-type&nbsp;event)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
331&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:production&nbsp;(:rule&nbsp;event)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
332&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:flow&nbsp;(format&nbsp;&quot;%s&nbsp;%f&nbsp;units&nbsp;of&nbsp;%s&nbsp;%s&nbsp;%d,%d:\n&nbsp;&nbsp;&nbsp;&nbsp;%s&quot;
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
333&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(name&nbsp;(:direction&nbsp;event))
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
334&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:quantity&nbsp;event)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
335&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:property&nbsp;event)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
336&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(=&nbsp;:sent&nbsp;(:direction&nbsp;event))&nbsp;&quot;to&quot;&nbsp;&quot;from&quot;)
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
337&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:x&nbsp;(:other&nbsp;event))
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
338&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:y&nbsp;(:other&nbsp;event))
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
339&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:rule&nbsp;event))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
340&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
341&nbsp;&nbsp;(defn&nbsp;history-string
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
342&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;the&nbsp;history&nbsp;of&nbsp;this&nbsp;`cell`&nbsp;as&nbsp;a&nbsp;string&nbsp;for&nbsp;presentation&nbsp;to&nbsp;the&nbsp;user.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
343&nbsp;&nbsp;&nbsp;&nbsp;[cell]
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
344&nbsp;&nbsp;&nbsp;&nbsp;(join&nbsp;&quot;\n&quot;
</span><br/>
<span class="not-covered" title="0 out of 12 forms covered">
345&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(format&nbsp;&quot;%6d:&nbsp;%s&quot;&nbsp;(:generation&nbsp;%)&nbsp;(event-narrative&nbsp;%))
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
346&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:history&nbsp;cell))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
347&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
348&nbsp;&nbsp;(defn-&nbsp;extend-summary&nbsp;[summary&nbsp;rs&nbsp;rl&nbsp;event]
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
349&nbsp;&nbsp;&nbsp;&nbsp;(str&nbsp;summary
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;rs&nbsp;(format&nbsp;&quot;%d-%d&nbsp;(%d&nbsp;occurances):&nbsp;%s\n&quot;&nbsp;rs
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
351&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:generation&nbsp;event)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
352&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rl
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
353&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event-narrative&nbsp;event))
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
354&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(format&nbsp;&quot;%d:&nbsp;%s\n&quot;&nbsp;(:generation&nbsp;event)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
355&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event-narrative&nbsp;event)))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
356&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
357&nbsp;&nbsp;(defn&nbsp;summarise-history
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
358&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return,&nbsp;as&nbsp;a&nbsp;string,&nbsp;a&nbsp;shorter&nbsp;summary&nbsp;of&nbsp;the&nbsp;history&nbsp;of&nbsp;this&nbsp;cell&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
359&nbsp;&nbsp;&nbsp;&nbsp;[cell]
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
360&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;[history&nbsp;(rest&nbsp;(:history&nbsp;cell))
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
361&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event&nbsp;(first&nbsp;(:history&nbsp;cell))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
362&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prev&nbsp;nil
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
363&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;nil
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
364&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rl&nbsp;0
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
365&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;summary&nbsp;&quot;&quot;]
</span><br/>
<span class="not-covered" title="0 out of 12 forms covered">
366&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(nil?&nbsp;event)&nbsp;(extend-summary&nbsp;summary&nbsp;rs&nbsp;rl&nbsp;prev)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
367&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(=&nbsp;(:rule&nbsp;event)&nbsp;(:rule&nbsp;prev))&nbsp;(recur
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
368&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(rest&nbsp;history)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
369&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(first&nbsp;history)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
370&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
371&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(or&nbsp;rs&nbsp;(:generation&nbsp;event))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
372&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(inc&nbsp;rl)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
373&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;summary)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
374&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;(recur&nbsp;(rest&nbsp;history)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(first&nbsp;history)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
376&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
377&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nil
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
378&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
379&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(extend-summary&nbsp;summary&nbsp;rs&nbsp;(inc&nbsp;rl)&nbsp;event)))))
</span><br/>
</body>
</html>