Petite Chez Scheme Version 7.4 Copyright (c) 1985-2007 Cadence Research Systems > (load "infer.scm") > (run* (q) (!- '() `(intc 5) q)) (int) > (run* (q) (!- '() q 'int)) ((intc _.0)) > (run* (q) (!- '() q 'bool)) ((boolc _.0)) > (run* (q) (!- '() '(zero? (intc 5)) q)) (bool) > (run* (q) (exist (e) (!- '() `(zero? ,e) q))) (bool) > (run* (q) (exist (e) (!- '() `(zero? ,q) e))) ((intc _.0)) > (run* (q) (exist (e) (!- '() `(zero? ,e) q))) C-c C-c break> r > (run 5 (q) (exist (e) (!- '() `(zero? ,e) q))) (bool bool bool bool bool) > (run 5 (q) (exist (e) (!- '() `(zero? ,q) e))) ((intc _.0) (sub1 (intc _.0)) (sub1 (sub1 (intc _.0))) (sub1 (sub1 (sub1 (intc _.0)))) (sub1 (sub1 (sub1 (sub1 (intc _.0)))))) > (run 5 (q) (exist (n m e) (!- '() `(+ ,n ,m) e) (== `(,n ,m ,e) q))) (((intc _.0) (intc _.1) int) ((intc _.0) (sub1 (intc _.1)) int) ((sub1 (intc _.0)) (intc _.1) int) ((intc _.0) (+ (intc _.1) (intc _.2)) int) ((intc _.0) (sub1 (sub1 (intc _.1))) int)) > (run 10 (q) (exist (n m e) (!- '() `(+ ,n ,m) e) (== `(,n ,m ,e) q))) (((intc _.0) (intc _.1) int) ((intc _.0) (sub1 (intc _.1)) int) ((sub1 (intc _.0)) (intc _.1) int) ((intc _.0) (+ (intc _.1) (intc _.2)) int) ((intc _.0) (sub1 (sub1 (intc _.1))) int) ((sub1 (intc _.0)) (sub1 (intc _.1)) int) ((+ (intc _.0) (intc _.1)) (intc _.2) int) ((intc _.0) (sub1 (+ (intc _.1) (intc _.2))) int) ((sub1 (intc _.0)) (+ (intc _.1) (intc _.2)) int) ((intc _.0) (+ (intc _.1) (sub1 (intc _.2))) int)) > (run 10 (q) (exist (n m e) (!- '() `(+ ,n ,m) e) (== n m) (== `(,n ,m ,e) q))) (((intc _.0) (intc _.0) int) ((sub1 (intc _.0)) (sub1 (intc _.0)) int) ((+ (intc _.0) (intc _.1)) (+ (intc _.0) (intc _.1)) int) ((sub1 (sub1 (intc _.0))) (sub1 (sub1 (intc _.0))) int) ((sub1 (+ (intc _.0) (intc _.1))) (sub1 (+ (intc _.0) (intc _.1))) int) ((+ (intc _.0) (sub1 (intc _.1))) (+ (intc _.0) (sub1 (intc _.1))) int) ((sub1 (sub1 (sub1 (intc _.0)))) (sub1 (sub1 (sub1 (intc _.0)))) int) ((+ (sub1 (intc _.0)) (intc _.1)) (+ (sub1 (intc _.0)) (intc _.1)) int) ((+ (intc _.0) (+ (intc _.1) (intc _.2))) (+ (intc _.0) (+ (intc _.1) (intc _.2))) int) ((sub1 (sub1 (+ (intc _.0) (intc _.1)))) (sub1 (sub1 (+ (intc _.0) (intc _.1)))) int)) > (run 1 (q) (exist () (!- '() '(if (zero? (sub1 (intc 5))) (intc 6) (intc 7)) q))) (int) > (run 2 (q) (exist () (!- '() '(if (zero? (sub1 (intc 5))) (intc 6) (intc 7)) q))) (int) > (run 1 (q) (exist () (!- '() '(if (zero? (sub1 (intc 5))) (intc 6) (intc 7)) q))) (int) > (run 2 (q) (exist () (!- '() '(if (zero? (sub1 (intc 5))) (intc 6) (intc 7)) q))) C-c C-c break> r > (run 2 (q) (exist () (!- '() '(if (zero? (sub1 (intc 5))) (intc 6) (intc 7)) q))) (int) > (run 2 (q) (exist (e t) (!- '() e t) (== `(,e ,t) q))) (((intc _.0) int) ((boolc _.0) bool)) > (run 100 (q) (exist (e t) (!- '() e t) (== `(,e ,t) q))) (((intc _.0) int) ((boolc _.0) bool) ((zero? (intc _.0)) bool) ((sub1 (intc _.0)) int) ((zero? (sub1 (intc _.0))) bool) ((sub1 (sub1 (intc _.0))) int) ((zero? (sub1 (sub1 (intc _.0)))) bool) ((+ (intc _.0) (intc _.1)) int) ((zero? (+ (intc _.0) (intc _.1))) bool) ((sub1 (sub1 (sub1 (intc _.0)))) int) ((if (boolc _.0) (intc _.1) (intc _.2)) int) ((zero? (sub1 (sub1 (sub1 (intc _.0))))) bool) ((zero? (if (boolc _.0) (intc _.1) (intc _.2))) bool) ((sub1 (+ (intc _.0) (intc _.1))) int) ((zero? (sub1 (+ (intc _.0) (intc _.1)))) bool) ((+ (intc _.0) (sub1 (intc _.1))) int) ((zero? (+ (intc _.0) (sub1 (intc _.1)))) bool) ((if (boolc _.0) (boolc _.1) (boolc _.2)) bool) ((+ (sub1 (intc _.0)) (intc _.1)) int) ((zero? (+ (sub1 (intc _.0)) (intc _.1))) bool) ((sub1 (sub1 (sub1 (sub1 (intc _.0))))) int) ((if (boolc _.0) (intc _.1) (sub1 (intc _.2))) int) ((zero? (sub1 (sub1 (sub1 (sub1 (intc _.0)))))) bool) ((sub1 (if (boolc _.0) (intc _.1) (intc _.2))) int) ((zero? (if (boolc _.0) (intc _.1) (sub1 (intc _.2)))) bool) ((zero? (sub1 (if (boolc _.0) (intc _.1) (intc _.2)))) bool) ((sub1 (sub1 (+ (intc _.0) (intc _.1)))) int) ((zero? (sub1 (sub1 (+ (intc _.0) (intc _.1))))) bool) ((sub1 (+ (intc _.0) (sub1 (intc _.1)))) int) ((zero? (if (boolc _.0) (sub1 (intc _.1)) (intc _.2))) bool) ((zero? (sub1 (+ (intc _.0) (sub1 (intc _.1))))) bool) ((if (boolc _.0) (boolc _.1) (zero? (intc _.2))) bool) ((+ (intc _.0) (sub1 (sub1 (intc _.1)))) int) ((zero? (+ (intc _.0) (sub1 (sub1 (intc _.1))))) bool) ((sub1 (+ (sub1 (intc _.0)) (intc _.1))) int) ((zero? (sub1 (+ (sub1 (intc _.0)) (intc _.1)))) bool) ((+ (sub1 (intc _.0)) (sub1 (intc _.1))) int) ((zero? (+ (sub1 (intc _.0)) (sub1 (intc _.1)))) bool) ((sub1 (sub1 (sub1 (sub1 (sub1 (intc _.0)))))) int) ((if (boolc _.0) (intc _.1) (sub1 (sub1 (intc _.2)))) int) ((zero? (if (zero? (intc _.0)) (intc _.1) (intc _.2))) bool) ((zero? (sub1 (sub1 (sub1 (sub1 (sub1 (intc _.0))))))) bool) ((sub1 (if (boolc _.0) (intc _.1) (sub1 (intc _.2)))) int) ((zero? (if (boolc _.0) (intc _.1) (sub1 (sub1 (intc _.2))))) bool) ((zero? (sub1 (if (boolc _.0) (intc _.1) (sub1 (intc _.2))))) bool) ((sub1 (sub1 (if (boolc _.0) (intc _.1) (intc _.2)))) int) ((zero? (sub1 (sub1 (if (boolc _.0) (intc _.1) (intc _.2))))) bool) ((+ (intc _.0) (+ (intc _.1) (intc _.2))) int) ((zero? (+ (intc _.0) (+ (intc _.1) (intc _.2)))) bool) ((sub1 (sub1 (sub1 (+ (intc _.0) (intc _.1))))) int) ((if (boolc _.0) (intc _.1) (+ (intc _.2) (intc _.3))) int) ((zero? (if (boolc _.0) (sub1 (intc _.1)) (sub1 (intc _.2)))) bool) ((zero? (sub1 (sub1 (sub1 (+ (intc _.0) (intc _.1)))))) bool) ((zero? (if (boolc _.0) (intc _.1) (+ (intc _.2) (intc _.3)))) bool) ((if (boolc _.0) (zero? (intc _.1)) (boolc _.2)) bool) ((+ (sub1 (sub1 (intc _.0))) (intc _.1)) int) ((zero? (+ (sub1 (sub1 (intc _.0))) (intc _.1))) bool) ((sub1 (if (boolc _.0) (sub1 (intc _.1)) (intc _.2))) int) ((zero? (sub1 (if (boolc _.0) (sub1 (intc _.1)) (intc _.2)))) bool) ((sub1 (sub1 (+ (intc _.0) (sub1 (intc _.1))))) int) ((zero? (sub1 (sub1 (+ (intc _.0) (sub1 (intc _.1)))))) bool) ((if (zero? (intc _.0)) (intc _.1) (intc _.2)) int) ((sub1 (+ (intc _.0) (sub1 (sub1 (intc _.1))))) int) ((zero? (sub1 (+ (intc _.0) (sub1 (sub1 (intc _.1)))))) bool) ((if (boolc _.0) (boolc _.1) (zero? (sub1 (intc _.2)))) bool) ((sub1 (sub1 (+ (sub1 (intc _.0)) (intc _.1)))) int) ((+ (intc _.0) (sub1 (sub1 (sub1 (intc _.1))))) int) ((zero? (sub1 (sub1 (+ (sub1 (intc _.0)) (intc _.1))))) bool) ((zero? (+ (intc _.0) (sub1 (sub1 (sub1 (intc _.1)))))) bool) ((sub1 (+ (sub1 (intc _.0)) (sub1 (intc _.1)))) int) ((zero? (sub1 (+ (sub1 (intc _.0)) (sub1 (intc _.1))))) bool) ((+ (sub1 (intc _.0)) (sub1 (sub1 (intc _.1)))) int) ((+ (intc _.0) (if (boolc _.1) (intc _.2) (intc _.3))) int) ((sub1 (if (zero? (intc _.0)) (intc _.1) (intc _.2))) int) ((zero? (+ (sub1 (intc _.0)) (sub1 (sub1 (intc _.1))))) bool) ((sub1 (sub1 (sub1 (sub1 (sub1 (sub1 (intc _.0))))))) int) ((zero? (+ (intc _.0) (if (boolc _.1) (intc _.2) (intc _.3)))) bool) ((if (boolc _.0) (intc _.1) (sub1 (sub1 (sub1 (intc _.2))))) int) ((zero? (sub1 (if (zero? (intc _.0)) (intc _.1) (intc _.2)))) bool) ((zero? (if (zero? (intc _.0)) (intc _.1) (sub1 (intc _.2)))) bool) ((zero? (sub1 (sub1 (sub1 (sub1 (sub1 (sub1 (intc _.0)))))))) bool) ((sub1 (if (boolc _.0) (intc _.1) (sub1 (sub1 (intc _.2))))) int) ((zero? (if (boolc _.0) (intc _.1) (sub1 (sub1 (sub1 (intc _.2)))))) bool) ((zero? (sub1 (if (boolc _.0) (intc _.1) (sub1 (sub1 (intc _.2)))))) bool) ((sub1 (sub1 (if (boolc _.0) (intc _.1) (sub1 (intc _.2))))) int) ((zero? (sub1 (sub1 (if (boolc _.0) (intc _.1) (sub1 (intc _.2)))))) bool) ((sub1 (sub1 (sub1 (if (boolc _.0) (intc _.1) (intc _.2))))) int) ((if (boolc _.0) (intc _.1) (if (boolc _.2) (intc _.3) (intc _.4))) int) ((zero? (sub1 (sub1 (sub1 (if (boolc _.0) (intc _.1) (intc _.2)))))) bool) ((zero? (if (boolc _.0) (intc _.1) (if (boolc _.2) (intc _.3) (intc _.4)))) bool) ((if (boolc _.0) (zero? (intc _.1)) (zero? (intc _.2))) bool) ((zero? (if (boolc _.0) (sub1 (intc _.1)) (sub1 (sub1 (intc _.2))))) bool) ((sub1 (+ (intc _.0) (+ (intc _.1) (intc _.2)))) int) ((zero? (sub1 (+ (intc _.0) (+ (intc _.1) (intc _.2))))) bool) ((+ (intc _.0) (sub1 (+ (intc _.1) (intc _.2)))) int) ((zero? (+ (intc _.0) (sub1 (+ (intc _.1) (intc _.2))))) bool) ((+ (sub1 (sub1 (intc _.0))) (sub1 (intc _.1))) int) ((zero? (+ (sub1 (sub1 (intc _.0))) (sub1 (intc _.1)))) bool) ((+ (sub1 (intc _.0)) (+ (intc _.1) (intc _.2))) int) ((sub1 (if (boolc _.0) (sub1 (intc _.1)) (sub1 (intc _.2)))) int)) > (run 100 (q) (exist () (!- '() `(if ,q (intc 6) (intc 7)) 'int))) ((boolc _.0) (zero? (intc _.0)) (zero? (sub1 (intc _.0))) (if (boolc _.0) (boolc _.1) (boolc _.2)) (zero? (sub1 (sub1 (intc _.0)))) (if (boolc _.0) (boolc _.1) (zero? (intc _.2))) (zero? (+ (intc _.0) (intc _.1))) (if (boolc _.0) (zero? (intc _.1)) (boolc _.2)) (zero? (sub1 (sub1 (sub1 (intc _.0))))) (zero? (if (boolc _.0) (intc _.1) (intc _.2))) (if (boolc _.0) (boolc _.1) (zero? (sub1 (intc _.2)))) (if (boolc _.0) (zero? (intc _.1)) (zero? (intc _.2))) (zero? (sub1 (+ (intc _.0) (intc _.1)))) (if (zero? (intc _.0)) (boolc _.1) (boolc _.2)) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (boolc _.4))) (zero? (+ (intc _.0) (sub1 (intc _.1)))) (zero? (+ (sub1 (intc _.0)) (intc _.1))) (zero? (sub1 (sub1 (sub1 (sub1 (intc _.0)))))) (zero? (if (boolc _.0) (intc _.1) (sub1 (intc _.2)))) (if (boolc _.0) (boolc _.1) (zero? (sub1 (sub1 (intc _.2))))) (zero? (sub1 (if (boolc _.0) (intc _.1) (intc _.2)))) (if (zero? (intc _.0)) (boolc _.1) (zero? (intc _.2))) (if (boolc _.0) (zero? (intc _.1)) (zero? (sub1 (intc _.2)))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (zero? (intc _.4)))) (zero? (sub1 (sub1 (+ (intc _.0) (intc _.1))))) (if (boolc _.0) (boolc _.1) (zero? (+ (intc _.2) (intc _.3)))) (if (boolc _.0) (zero? (intc _.1)) (if (boolc _.2) (boolc _.3) (boolc _.4))) (zero? (if (boolc _.0) (sub1 (intc _.1)) (intc _.2))) (zero? (sub1 (+ (intc _.0) (sub1 (intc _.1))))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (zero? (intc _.3)) (boolc _.4))) (zero? (+ (intc _.0) (sub1 (sub1 (intc _.1))))) (zero? (sub1 (+ (sub1 (intc _.0)) (intc _.1)))) (zero? (+ (sub1 (intc _.0)) (sub1 (intc _.1)))) (zero? (if (zero? (intc _.0)) (intc _.1) (intc _.2))) (zero? (sub1 (sub1 (sub1 (sub1 (sub1 (intc _.0))))))) (zero? (if (boolc _.0) (intc _.1) (sub1 (sub1 (intc _.2))))) (if (boolc _.0) (boolc _.1) (zero? (sub1 (sub1 (sub1 (intc _.2)))))) (zero? (sub1 (if (boolc _.0) (intc _.1) (sub1 (intc _.2))))) (zero? (sub1 (sub1 (if (boolc _.0) (intc _.1) (intc _.2))))) (if (zero? (intc _.0)) (boolc _.1) (zero? (sub1 (intc _.2)))) (if (boolc _.0) (boolc _.1) (zero? (if (boolc _.2) (intc _.3) (intc _.4)))) (if (boolc _.0) (zero? (intc _.1)) (zero? (sub1 (sub1 (intc _.2))))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (zero? (sub1 (intc _.4))))) (if (boolc _.0) (zero? (intc _.1)) (if (boolc _.2) (boolc _.3) (zero? (intc _.4)))) (if (zero? (intc _.0)) (zero? (intc _.1)) (boolc _.2)) (zero? (+ (intc _.0) (+ (intc _.1) (intc _.2)))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (zero? (intc _.3)) (zero? (intc _.4)))) (zero? (if (boolc _.0) (sub1 (intc _.1)) (sub1 (intc _.2)))) (zero? (sub1 (sub1 (sub1 (+ (intc _.0) (intc _.1)))))) (zero? (if (boolc _.0) (intc _.1) (+ (intc _.2) (intc _.3)))) (if (boolc _.0) (boolc _.1) (zero? (sub1 (+ (intc _.2) (intc _.3))))) (if (boolc _.0) (zero? (intc _.1)) (zero? (+ (intc _.2) (intc _.3)))) (if (boolc _.0) (boolc _.1) (if (zero? (intc _.2)) (boolc _.3) (boolc _.4))) (if (boolc _.0) (zero? (sub1 (intc _.1))) (boolc _.2)) (if (zero? (intc _.0)) (boolc _.1) (if (boolc _.2) (boolc _.3) (boolc _.4))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (if (boolc _.4) (boolc _.5) (boolc _.6)))) (zero? (+ (sub1 (sub1 (intc _.0))) (intc _.1))) (if (zero? (intc _.0)) (zero? (intc _.1)) (zero? (intc _.2))) (zero? (sub1 (if (boolc _.0) (sub1 (intc _.1)) (intc _.2)))) (zero? (sub1 (sub1 (+ (intc _.0) (sub1 (intc _.1)))))) (if (boolc _.0) (boolc _.1) (zero? (+ (intc _.2) (sub1 (intc _.3))))) (if (boolc _.0) (zero? (intc _.1)) (if (boolc _.2) (zero? (intc _.3)) (boolc _.4))) (zero? (sub1 (+ (intc _.0) (sub1 (sub1 (intc _.1)))))) (zero? (sub1 (sub1 (+ (sub1 (intc _.0)) (intc _.1))))) (zero? (+ (intc _.0) (sub1 (sub1 (sub1 (intc _.1)))))) (if (boolc _.0) (boolc _.1) (zero? (+ (sub1 (intc _.2)) (intc _.3)))) (zero? (sub1 (+ (sub1 (intc _.0)) (sub1 (intc _.1))))) (zero? (+ (sub1 (intc _.0)) (sub1 (sub1 (intc _.1))))) (zero? (+ (intc _.0) (if (boolc _.1) (intc _.2) (intc _.3)))) (zero? (sub1 (if (zero? (intc _.0)) (intc _.1) (intc _.2)))) (zero? (if (zero? (intc _.0)) (intc _.1) (sub1 (intc _.2)))) (zero? (sub1 (sub1 (sub1 (sub1 (sub1 (sub1 (intc _.0)))))))) (zero? (if (boolc _.0) (intc _.1) (sub1 (sub1 (sub1 (intc _.2)))))) (if (boolc _.0) (boolc _.1) (zero? (sub1 (sub1 (sub1 (sub1 (intc _.2))))))) (zero? (sub1 (if (boolc _.0) (intc _.1) (sub1 (sub1 (intc _.2)))))) (zero? (sub1 (sub1 (if (boolc _.0) (intc _.1) (sub1 (intc _.2)))))) (if (zero? (intc _.0)) (boolc _.1) (zero? (sub1 (sub1 (intc _.2))))) (if (boolc _.0) (boolc _.1) (zero? (if (boolc _.2) (intc _.3) (sub1 (intc _.4))))) (if (boolc _.0) (zero? (intc _.1)) (zero? (sub1 (sub1 (sub1 (intc _.2)))))) (zero? (sub1 (sub1 (sub1 (if (boolc _.0) (intc _.1) (intc _.2)))))) (zero? (if (boolc _.0) (intc _.1) (if (boolc _.2) (intc _.3) (intc _.4)))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (zero? (sub1 (sub1 (intc _.4)))))) (if (boolc _.0) (boolc _.1) (zero? (sub1 (if (boolc _.2) (intc _.3) (intc _.4))))) (if (boolc _.0) (zero? (intc _.1)) (zero? (if (boolc _.2) (intc _.3) (intc _.4)))) (if (boolc _.0) (boolc _.1) (if (zero? (intc _.2)) (boolc _.3) (zero? (intc _.4)))) (if (boolc _.0) (zero? (intc _.1)) (if (boolc _.2) (boolc _.3) (zero? (sub1 (intc _.4))))) (if (boolc _.0) (zero? (sub1 (intc _.1))) (zero? (intc _.2))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (zero? (intc _.3)) (zero? (sub1 (intc _.4))))) (if (zero? (intc _.0)) (boolc _.1) (if (boolc _.2) (boolc _.3) (zero? (intc _.4)))) (zero? (if (boolc _.0) (sub1 (intc _.1)) (sub1 (sub1 (intc _.2))))) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (if (boolc _.4) (boolc _.5) (zero? (intc _.6))))) (zero? (sub1 (+ (intc _.0) (+ (intc _.1) (intc _.2))))) (zero? (+ (intc _.0) (sub1 (+ (intc _.1) (intc _.2))))) (if (boolc _.0) (zero? (intc _.1)) (if (boolc _.2) (zero? (intc _.3)) (zero? (intc _.4)))) (zero? (+ (sub1 (sub1 (intc _.0))) (sub1 (intc _.1)))) (zero? (+ (sub1 (intc _.0)) (+ (intc _.1) (intc _.2)))) (if (zero? (intc _.0)) (zero? (intc _.1)) (zero? (sub1 (intc _.2)))) (zero? (sub1 (if (boolc _.0) (sub1 (intc _.1)) (sub1 (intc _.2))))) (zero? (sub1 (sub1 (sub1 (sub1 (+ (intc _.0) (intc _.1))))))) (zero? (if (boolc _.0) (intc _.1) (sub1 (+ (intc _.2) (intc _.3)))))) > (define ls (run 10000 (q) (exist () (!- '() `(if ,q (intc 6) (intc 7)) 'int)))) > (length ls) 10000 > (list-ref ls 40) (if (boolc _.0) (boolc _.1) (zero? (if (boolc _.2) (intc _.3) (intc _.4)))) > (list-ref ls 4000) (if (boolc _.0) (boolc _.1) (if (boolc _.2) (boolc _.3) (zero? (+ (sub1 (intc _.4)) (+ (sub1 (intc _.5)) (intc _.6)))))) > (list-ref ls 9000) (zero? (sub1 (if (boolc _.0) (intc _.1) (sub1 (if (boolc _.2) (intc _.3) (if (zero? (intc _.4)) (intc _.5) (intc _.6)))))))