(define (test/letnondeterministic/graph+cycles/bfs _)
(⊦= '((a b c a) (a b c e a) (a b d e a))
(letnondeterministic
(? ¿ ⊦ • !)
(define (neighbors node)
(letassoc
(node '((a (b)) (b (c d)) (c (a e)) (d (e)) (e (a))))
(else '())))
(define (path node1 node2 seen)
(⊦ (not (member? node1 seen)))
(let1 (n (? (neighbors node1)))
(if (eq? n node2)
(list node2)
(cons n (path n node2 (cons node1 seen))))))
(let* ((source 'a) (p (path source 'a '()))) (cons source p)))))
((eta 0.0)
(memory #(12582912 2372792 1048576))
(stdout
"((left 0)\n (tried 17)\n (accepted 3)\n (ratio 0.176470588235294)\n (distribution\n (((a b c a) 0.333333333333333)\n ((a b c e a) 0.333333333333333)\n ((a b d e a) 0.333333333333333))))\n")
(stderr ""))
test/letnondeterministic/temporal-graphs: pass
(define (test/letnondeterministic/temporal-graphs _)
(define graph-simple
`((a ((b (1 2 3))))
(b ((c (2 5)) (d ,ℕ)))
(c ((a (2 3 4 5 6)) (e ,ℕ)))
(d ((e (3 4 5))))
(e ((a ,ℕ)))))
(define (V g) (map car g))
(⊦= '(((a b) ((a 1) (b 2)))
((a b) ((a 1) (b 3)))
((a c) ((a 1) (b 2) (c 5)))
((a c) ((a 1) (b 3) (c 5)))
((a d) ((a 1) (b 2) (d 3)))
((a d) ((a 1) (b 2) (d 4)))
((a d) ((a 1) (b 2) (d 5)))
((a d) ((a 1) (b 2) (d 6)))
((a d) ((a 1) (b 2) (d 7)))
((a d) ((a 1) (b 3) (d 4)))
((a d) ((a 1) (b 3) (d 5)))
((a d) ((a 1) (b 3) (d 6)))
((a d) ((a 1) (b 3) (d 7)))
((a e) ((a 1) (b 2) (c 5) (e 6)))
((a e) ((a 1) (b 2) (c 5) (e 7)))
((a e) ((a 1) (b 2) (d 3) (e 4)))
((a e) ((a 1) (b 2) (d 3) (e 5)))
((a e) ((a 1) (b 2) (d 4) (e 5)))
((a e) ((a 1) (b 3) (c 5) (e 6)))
((a e) ((a 1) (b 3) (c 5) (e 7)))
((a e) ((a 1) (b 3) (d 4) (e 5)))
((b a) ((b 1) (c 2) (a 3)))
((b a) ((b 1) (c 2) (a 4)))
((b a) ((b 1) (c 2) (a 5)))
((b a) ((b 1) (c 2) (a 6)))
((b a) ((b 1) (c 2) (e 3) (a 4)))
((b a) ((b 1) (c 2) (e 3) (a 5)))
((b a) ((b 1) (c 2) (e 3) (a 6)))
((b a) ((b 1) (c 2) (e 3) (a 7)))
((b a) ((b 1) (c 2) (e 4) (a 5)))
((b a) ((b 1) (c 2) (e 4) (a 6)))
((b a) ((b 1) (c 2) (e 4) (a 7)))
((b a) ((b 1) (c 2) (e 5) (a 6)))
((b a) ((b 1) (c 2) (e 5) (a 7)))
((b a) ((b 1) (c 2) (e 6) (a 7)))
((b a) ((b 1) (c 5) (a 6)))
((b a) ((b 1) (c 5) (e 6) (a 7)))
((b a) ((b 1) (d 2) (e 3) (a 4)))
((b a) ((b 1) (d 2) (e 3) (a 5)))
((b a) ((b 1) (d 2) (e 3) (a 6)))
((b a) ((b 1) (d 2) (e 3) (a 7)))
((b a) ((b 1) (d 2) (e 4) (a 5)))
((b a) ((b 1) (d 2) (e 4) (a 6)))
((b a) ((b 1) (d 2) (e 4) (a 7)))
((b a) ((b 1) (d 2) (e 5) (a 6)))
((b a) ((b 1) (d 2) (e 5) (a 7)))
((b a) ((b 1) (d 3) (e 4) (a 5)))
((b a) ((b 1) (d 3) (e 4) (a 6)))
((b a) ((b 1) (d 3) (e 4) (a 7)))
((b a) ((b 1) (d 3) (e 5) (a 6)))
((b a) ((b 1) (d 3) (e 5) (a 7)))
((b a) ((b 1) (d 4) (e 5) (a 6)))
((b a) ((b 1) (d 4) (e 5) (a 7)))
((b c) ((b 1) (c 2)))
((b c) ((b 1) (c 5)))
((b d) ((b 1) (d 2)))
((b d) ((b 1) (d 3)))
((b d) ((b 1) (d 4)))
((b d) ((b 1) (d 5)))
((b d) ((b 1) (d 6)))
((b d) ((b 1) (d 7)))
((b e) ((b 1) (c 2) (e 3)))
((b e) ((b 1) (c 2) (e 4)))
((b e) ((b 1) (c 2) (e 5)))
((b e) ((b 1) (c 2) (e 6)))
((b e) ((b 1) (c 2) (e 7)))
((b e) ((b 1) (c 5) (e 6)))
((b e) ((b 1) (c 5) (e 7)))
((b e) ((b 1) (d 2) (e 3)))
((b e) ((b 1) (d 2) (e 4)))
((b e) ((b 1) (d 2) (e 5)))
((b e) ((b 1) (d 3) (e 4)))
((b e) ((b 1) (d 3) (e 5)))
((b e) ((b 1) (d 4) (e 5)))
((c a) ((c 1) (a 2)))
((c a) ((c 1) (a 3)))
((c a) ((c 1) (a 4)))
((c a) ((c 1) (a 5)))
((c a) ((c 1) (a 6)))
((c a) ((c 1) (e 2) (a 3)))
((c a) ((c 1) (e 2) (a 4)))
((c a) ((c 1) (e 2) (a 5)))
((c a) ((c 1) (e 2) (a 6)))
((c a) ((c 1) (e 2) (a 7)))
((c a) ((c 1) (e 3) (a 4)))
((c a) ((c 1) (e 3) (a 5)))
((c a) ((c 1) (e 3) (a 6)))
((c a) ((c 1) (e 3) (a 7)))
((c a) ((c 1) (e 4) (a 5)))
((c a) ((c 1) (e 4) (a 6)))
((c a) ((c 1) (e 4) (a 7)))
((c a) ((c 1) (e 5) (a 6)))
((c a) ((c 1) (e 5) (a 7)))
((c a) ((c 1) (e 6) (a 7)))
((c b) ((c 1) (a 2) (b 3)))
((c d) ((c 1) (a 2) (b 3) (d 4)))
((c d) ((c 1) (a 2) (b 3) (d 5)))
((c d) ((c 1) (a 2) (b 3) (d 6)))
((c d) ((c 1) (a 2) (b 3) (d 7)))
((c e) ((c 1) (a 2) (b 3) (d 4) (e 5)))
((c e) ((c 1) (e 2)))
((c e) ((c 1) (e 3)))
((c e) ((c 1) (e 4)))
((c e) ((c 1) (e 5)))
((c e) ((c 1) (e 6)))
((c e) ((c 1) (e 7)))
((d a) ((d 1) (e 3) (a 4)))
((d a) ((d 1) (e 3) (a 5)))
((d a) ((d 1) (e 3) (a 6)))
((d a) ((d 1) (e 3) (a 7)))
((d a) ((d 1) (e 4) (a 5)))
((d a) ((d 1) (e 4) (a 6)))
((d a) ((d 1) (e 4) (a 7)))
((d a) ((d 1) (e 5) (a 6)))
((d a) ((d 1) (e 5) (a 7)))
((d e) ((d 1) (e 3)))
((d e) ((d 1) (e 4)))
((d e) ((d 1) (e 5)))
((e a) ((e 1) (a 2)))
((e a) ((e 1) (a 3)))
((e a) ((e 1) (a 4)))
((e a) ((e 1) (a 5)))
((e a) ((e 1) (a 6)))
((e a) ((e 1) (a 7)))
((e b) ((e 1) (a 2) (b 3)))
((e c) ((e 1) (a 2) (b 3) (c 5)))
((e d) ((e 1) (a 2) (b 3) (d 4)))
((e d) ((e 1) (a 2) (b 3) (d 5)))
((e d) ((e 1) (a 2) (b 3) (d 6)))
((e d) ((e 1) (a 2) (b 3) (d 7))))
(letnondeterministic
-1
(? ¿ ⊦ • !)
(define (path p node1 node2 seen maxlen maxt)
(let* ((lastpair (car p))
(l (caddr lastpair))
(_ (⊦ (< l (add1 maxlen))))
(pair (? (letassoc (node1 graph-simple) (else '()))))
(n (car pair))
(_ (⊦ (not (member? n seen))))
(t₁ (? (cadr pair) (λ (t) (< t maxt))))
(t₀ (cadr lastpair))
(_ (⊦ (> t₁ t₀)))
(newp (cons (list n t₁ (add1 l)) p)))
(cond ((eq? n node2) (reverse newp))
(else (path newp n node2 (cons node1 seen) maxlen maxt)))))
(let* ((vertices (V graph-simple))
(source (? vertices))
(destination (? vertices))
(p (path (list (list source 1 1))
source
destination
'()
15
7)))
(list (list source destination)
(map (λ (triple) (list (car triple) (cadr triple))) p))))))
((eta 0.003)
(memory #(12582912 2439984 1048576))
(stdout
"((left 0)\n (tried 4013)\n (accepted 130)\n (ratio 0.0323947171692001)\n (distribution\n ((((a b) ((a 1) (b 2))) 0.00769230769230769)\n (((a b) ((a 1) (b 3))) 0.00769230769230769)\n (((a c) ((a 1) (b 2) (c 5))) 0.00769230769230769)\n (((a c) ((a 1) (b 3) (c 5))) 0.00769230769230769)\n (((a d) ((a 1) (b 2) (d 3))) 0.00769230769230769)\n (((a d) ((a 1) (b 2) (d 4))) 0.00769230769230769)\n (((a d) ((a 1) (b 2) (d 5))) 0.00769230769230769)\n (((a d) ((a 1) (b 2) (d 6))) 0.00769230769230769)\n (((a d) ((a 1) (b 2) (d 7))) 0.00769230769230769)\n (((a d) ((a 1) (b 3) (d 4))) 0.00769230769230769)\n (((a d) ((a 1) (b 3) (d 5))) 0.00769230769230769)\n (((a d) ((a 1) (b 3) (d 6))) 0.00769230769230769)\n (((a d) ((a 1) (b 3) (d 7))) 0.00769230769230769)\n (((a e) ((a 1) (b 2) (c 5) (e 6))) 0.00769230769230769)\n (((a e) ((a 1) (b 2) (c 5) (e 7))) 0.00769230769230769)\n (((a e) ((a 1) (b 2) (d 3) (e 4))) 0.00769230769230769)\n (((a e) ((a 1) (b 2) (d 3) (e 5))) 0.00769230769230769)\n (((a e) ((a 1) (b 2) (d 4) (e 5))) 0.00769230769230769)\n (((a e) ((a 1) (b 3) (c 5) (e 6))) 0.00769230769230769)\n (((a e) ((a 1) (b 3) (c 5) (e 7))) 0.00769230769230769)\n (((a e) ((a 1) (b 3) (d 4) (e 5))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (a 3))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (a 4))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (a 5))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 3) (a 4))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 3) (a 5))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 3) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 3) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 4) (a 5))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 4) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 4) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 5) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 5) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (c 2) (e 6) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (c 5) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (c 5) (e 6) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 3) (a 4))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 3) (a 5))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 3) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 3) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 4) (a 5))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 4) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 4) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 5) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (d 2) (e 5) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (d 3) (e 4) (a 5))) 0.00769230769230769)\n (((b a) ((b 1) (d 3) (e 4) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (d 3) (e 4) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (d 3) (e 5) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (d 3) (e 5) (a 7))) 0.00769230769230769)\n (((b a) ((b 1) (d 4) (e 5) (a 6))) 0.00769230769230769)\n (((b a) ((b 1) (d 4) (e 5) (a 7))) 0.00769230769230769)\n (((b c) ((b 1) (c 2))) 0.00769230769230769)\n (((b c) ((b 1) (c 5))) 0.00769230769230769)\n (((b d) ((b 1) (d 2))) 0.00769230769230769)\n (((b d) ((b 1) (d 3))) 0.00769230769230769)\n (((b d) ((b 1) (d 4))) 0.00769230769230769)\n (((b d) ((b 1) (d 5))) 0.00769230769230769)\n (((b d) ((b 1) (d 6))) 0.00769230769230769)\n (((b d) ((b 1) (d 7))) 0.00769230769230769)\n (((b e) ((b 1) (c 2) (e 3))) 0.00769230769230769)\n (((b e) ((b 1) (c 2) (e 4))) 0.00769230769230769)\n (((b e) ((b 1) (c 2) (e 5))) 0.00769230769230769)\n (((b e) ((b 1) (c 2) (e 6))) 0.00769230769230769)\n (((b e) ((b 1) (c 2) (e 7))) 0.00769230769230769)\n (((b e) ((b 1) (c 5) (e 6))) 0.00769230769230769)\n (((b e) ((b 1) (c 5) (e 7))) 0.00769230769230769)\n (((b e) ((b 1) (d 2) (e 3))) 0.00769230769230769)\n (((b e) ((b 1) (d 2) (e 4))) 0.00769230769230769)\n (((b e) ((b 1) (d 2) (e 5))) 0.00769230769230769)\n (((b e) ((b 1) (d 3) (e 4))) 0.00769230769230769)\n (((b e) ((b 1) (d 3) (e 5))) 0.00769230769230769)\n (((b e) ((b 1) (d 4) (e 5))) 0.00769230769230769)\n (((c a) ((c 1) (a 2))) 0.00769230769230769)\n (((c a) ((c 1) (a 3))) 0.00769230769230769)\n (((c a) ((c 1) (a 4))) 0.00769230769230769)\n (((c a) ((c 1) (a 5))) 0.00769230769230769)\n (((c a) ((c 1) (a 6))) 0.00769230769230769)\n (((c a) ((c 1) (e 2) (a 3))) 0.00769230769230769)\n (((c a) ((c 1) (e 2) (a 4))) 0.00769230769230769)\n (((c a) ((c 1) (e 2) (a 5))) 0.00769230769230769)\n (((c a) ((c 1) (e 2) (a 6))) 0.00769230769230769)\n (((c a) ((c 1) (e 2) (a 7))) 0.00769230769230769)\n (((c a) ((c 1) (e 3) (a 4))) 0.00769230769230769)\n (((c a) ((c 1) (e 3) (a 5))) 0.00769230769230769)\n (((c a) ((c 1) (e 3) (a 6))) 0.00769230769230769)\n (((c a) ((c 1) (e 3) (a 7))) 0.00769230769230769)\n (((c a) ((c 1) (e 4) (a 5))) 0.00769230769230769)\n (((c a) ((c 1) (e 4) (a 6))) 0.00769230769230769)\n (((c a) ((c 1) (e 4) (a 7))) 0.00769230769230769)\n (((c a) ((c 1) (e 5) (a 6))) 0.00769230769230769)\n (((c a) ((c 1) (e 5) (a 7))) 0.00769230769230769)\n (((c a) ((c 1) (e 6) (a 7))) 0.00769230769230769)\n (((c b) ((c 1) (a 2) (b 3))) 0.00769230769230769)\n (((c d) ((c 1) (a 2) (b 3) (d 4))) 0.00769230769230769)\n (((c d) ((c 1) (a 2) (b 3) (d 5))) 0.00769230769230769)\n (((c d) ((c 1) (a 2) (b 3) (d 6))) 0.00769230769230769)\n (((c d) ((c 1) (a 2) (b 3) (d 7))) 0.00769230769230769)\n (((c e) ((c 1) (a 2) (b 3) (d 4) (e 5))) 0.00769230769230769)\n (((c e) ((c 1) (e 2))) 0.00769230769230769)\n (((c e) ((c 1) (e 3))) 0.00769230769230769)\n (((c e) ((c 1) (e 4))) 0.00769230769230769)\n (((c e) ((c 1) (e 5))) 0.00769230769230769)\n (((c e) ((c 1) (e 6))) 0.00769230769230769)\n (((c e) ((c 1) (e 7))) 0.00769230769230769)\n (((d a) ((d 1) (e 3) (a 4))) 0.00769230769230769)\n (((d a) ((d 1) (e 3) (a 5))) 0.00769230769230769)\n (((d a) ((d 1) (e 3) (a 6))) 0.00769230769230769)\n (((d a) ((d 1) (e 3) (a 7))) 0.00769230769230769)\n (((d a) ((d 1) (e 4) (a 5))) 0.00769230769230769)\n (((d a) ((d 1) (e 4) (a 6))) 0.00769230769230769)\n (((d a) ((d 1) (e 4) (a 7))) 0.00769230769230769)\n (((d a) ((d 1) (e 5) (a 6))) 0.00769230769230769)\n (((d a) ((d 1) (e 5) (a 7))) 0.00769230769230769)\n (((d e) ((d 1) (e 3))) 0.00769230769230769)\n (((d e) ((d 1) (e 4))) 0.00769230769230769)\n (((d e) ((d 1) (e 5))) 0.00769230769230769)\n (((e a) ((e 1) (a 2))) 0.00769230769230769)\n (((e a) ((e 1) (a 3))) 0.00769230769230769)\n (((e a) ((e 1) (a 4))) 0.00769230769230769)\n (((e a) ((e 1) (a 5))) 0.00769230769230769)\n (((e a) ((e 1) (a 6))) 0.00769230769230769)\n (((e a) ((e 1) (a 7))) 0.00769230769230769)\n (((e b) ((e 1) (a 2) (b 3))) 0.00769230769230769)\n (((e c) ((e 1) (a 2) (b 3) (c 5))) 0.00769230769230769)\n (((e d) ((e 1) (a 2) (b 3) (d 4))) 0.00769230769230769)\n (((e d) ((e 1) (a 2) (b 3) (d 5))) 0.00769230769230769)\n (((e d) ((e 1) (a 2) (b 3) (d 6))) 0.00769230769230769)\n (((e d) ((e 1) (a 2) (b 3) (d 7))) 0.00769230769230769))))\n")
(stderr ""))