# HG changeset patch # User Mike Pavone # Date 1376034449 25200 # Node ID 3f0172ceab81d9d73e1e8ce5e54d438963f1f132 # Parent 301f16245955e3bd25b28eec70317500056fdf12 Add support for generating programs with if0, thus allowing us to generate all programs up to size 5. diff -r 301f16245955 -r 3f0172ceab81 src/bv.tp --- a/src/bv.tp Fri Aug 09 00:01:05 2013 -0700 +++ b/src/bv.tp Fri Aug 09 00:47:29 2013 -0700 @@ -192,13 +192,35 @@ } numLeft <- numLeft + 1 } + if: n > 3 { + numLeft <- 1 + limitLeft <- n - 2 + while: { numLeft < limitLeft } do: { + numMid <- 1 + limitMid <- n - (1 + numLeft) + while: { numMid < limitMid } do: { + numRight <- n - (1 + numLeft + numMid) + choicesRight <- (allOfSize: numRight inFold?: infold?) + choicesMid <- (allOfSize: numMid inFold?: infold?) + foreach: (allOfSize: numLeft inFold?: infold?) :idx leftExp { + foreach: choicesMid :idx midExp { + foreach: choicesRight :idx rightExp { + res append: (if0: leftExp then: midExp else: rightExp) + } + } + } + numMid <- numMid + 1 + } + numLeft <- numLeft + 1 + } + } } res } } allOfSize <- :n { - allOfSize: n inFold?: false + allOfSize: (n - 1) inFold?: false } } } @@ -217,7 +239,7 @@ test: (program gentestprog) test: (program exampleprog) prog <- program - foreach: (prog allOfSize: 3) :idx tree { + foreach: (prog allOfSize: 5) :idx tree { prog root! tree test: prog }