Welcome to the CHICKEN Scheme pasting service

magic5o not worko added by saeftl on Sat Jan 17 21:29:39 2015

(use mini-kanren)
(use srfi-1)

(define (distincto l)
  (conde ((nullo l))
         ((fresh (h) (== l `(,h))))
         ((fresh (h1 h2 t x)
				 (conso h1 x l)
				 (conso h2 t x)
                 (=/= h1 h2)
                 (distincto `(,h1 . ,t))
                 (distincto `(,h2 . ,t))))))

(define (notino x l)
	(conde ((nullo l))
		((fresh (h t) (conso h t l)
			(=/= h x)
			(notino x t)))))

(define (test-not-in)
	(let ((sq3 (map build-num (iota 3 1))))
	(run 3 (q) (fresh (a b c) (== q (list a b c))
		(membero a sq3)
		(=/= a  b )
		(membero b sq3)
		(membero c sq3)
		(notino c (list a b)))))
)		

(define (=/= a b)
	(conde ((pairo a) (== b '()))
		   ((pairo b) (== a '()))
		   ((caro a 0) (caro b 1))
		   ((caro a 1) (caro b 0))
		   ((fresh (at bt)
				(cdro a at)
				(cdro b bt)
				(=/= at bt)))))

(set! sum25 (let ((n 5))
	(build-num (/ (* n (+ (* n n) 1)) 2))))
(set! sq25 (map build-num (iota 25 1)))

(define blah
(run 1
     (q)
     (fresh (x11 x12
                 x13
                 x14
                 x15
                 x21
                 x22
                 x23
                 x24
                 x25
                 x31
                 x32
                 x33
                 x34
                 x35
                 x41
                 x42
                 x43
                 x44
                 x45
                 x51
                 x52
                 x53
                 x54
                 x55)
            (== q
                (list x11
                      x12
                      x13
                      x14
                      x15
                      x21
                      x22
                      x23
                      x24
                      x25
                      x31
                      x32
                      x33
                      x34
                      x35
                      x41
                      x42
                      x43
                      x44
                      x45
                      x51
                      x52
                      x53
                      x54
                      x55))
            (membero x11 sq25)
			(=/= x12 x11)
            (membero x12 sq25)
            (membero x13 sq25)
			(notino x13 (list x11 x12))
            (membero x14 sq25)
			(notino x14 (list x11 x12 x13))
            (membero x15 sq25)
			(notino x15 (list x11 x12 x13 x14))
            (membero x21 sq25)
			(notino x21 (list x11 x12 x13 x14 x15))
            (membero x22 sq25)
			(notino x22 (list x11 x12 x13 x14 x15 x21))
            (membero x23 sq25)
			(notino x23 (list x11 x12 x13 x14 x15 x21 x22))
            (membero x24 sq25)
			(notino x24 (list x11 x12 x13 x14 x15 x21 x22 x23))
            (membero x25 sq25)
			(notino x25 (list x11 x12 x13 x14 x15 x21 x22 x23 x24))
            (membero x31 sq25)
			(notino x31 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25))
            (membero x32 sq25)
			(notino x32 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31))
            (membero x33 sq25)
			(notino x33 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32))
            (membero x34 sq25)
			(notino x34 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33))
            (membero x35 sq25)
			(notino x35 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34))
            (membero x41 sq25)
			(notino x41 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35))
            (membero x42 sq25)
			(notino x42 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41))
            (membero x43 sq25)
			(notino x43 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42))
            (membero x44 sq25)
			(notino x44 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43))
            (membero x45 sq25)
			(notino x45 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44))
            (membero x51 sq25)
			(notino x51 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45))
            (membero x52 sq25)
			(notino x52 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45 x51))
            (membero x53 sq25)
			(notino x53 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45 x51 x52))
            (membero x54 sq25)
			(notino x54 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45 x51 x52 x53))
            (membero x55 sq25)
			(notino x55 (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45 x51 x52 x53 x54))
			(trace-vars (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45 x51 x52 x53 x54 x55))
;            (distincto (list x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35 x41 x42 x43 x44 x45 x51 x52 x53 x54 x55))
            (fresh (y) (addero x11 x12 x13 y) (addero y x14 x15 sum25))
            (fresh (y) (addero x21 x22 x23 y) (addero y x24 x25 sum25))
            (fresh (y) (addero x31 x32 x33 y) (addero y x34 x35 sum25))
            (fresh (y) (addero x41 x42 x43 y) (addero y x44 x45 sum25))
            (fresh (y) (addero x51 x52 x53 y) (addero y x54 x55 sum25))
            (fresh (y) (addero x11 x21 x31 y) (addero y x41 x51 sum25))
            (fresh (y) (addero x12 x22 x32 y) (addero y x42 x52 sum25))
            (fresh (y) (addero x13 x23 x33 y) (addero y x43 x53 sum25))
            (fresh (y) (addero x14 x24 x34 y) (addero y x44 x54 sum25))
            (fresh (y) (addero x15 x25 x35 y) (addero y x45 x55 sum25)))))


Your annotation:

Enter a new annotation:

Your nick:
The title of your paste:
Your paste (mandatory) :
Name of the egg which implements this service:
Visually impaired? Let me spell it for you (wav file) download WAV