<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">Hi Patrik,</div><div class=""><br class=""></div><div class="">You work sounds quite interesting and I'd like to help, and to hear about your progress.</div><div class=""><br class=""></div><div class="">On the issue that you raised, with ephemeral random constants, I think that the Jsh Java implementation may do something different from what is described in the Push 3 language description, which was followed most closely by the Common Lisp implementation.</div><div class=""><br class=""></div><div class="">In the Common Lisp implementation, and also in other more recent implementations (e.g. "Clojush" in Clojure, which is what I work with most), one can get random constants in generated random code by including an "ephemeral random constant" in the instruction set. I believe this is essentially the approach used in Koza's 1992 book, and in the code that he distributed with it. What is an ephemeral random constant? It can be implemented in various ways, but the key thing is that it's something that the code generator recognizes, and when it is picked from the instruction set, it is not itself included in the generated program; rather, a function is called to produce a random value that is included in the generated program in its place. So you could have an ephemeral random constant for integers in the range -100 to 100, and throw that in the instruction set, and when the code generator tries to include it in a program it will instead produce a specific random integer in that range, and include that in the generated program.</div><div class=""><br class=""></div><div class="">Does that answer your question?</div><div class=""><br class=""></div><div class="">FWIW, in many of our implementations, in functional languages, we implement this by including random-constant-generating functions directly in the instruction set. When the code generator picks something from the instruction set it checks to see if it's a function -- if not, then it uses it literally, but if it's a function, it calls it and uses its result. But this is just an implementation detail.</div><div class=""><br class=""></div><div class="">Let me know if this isn't clear, or if you have any other questions.</div><div class=""><br class=""></div><div class="">FYI the push listserv to which you've sent this (and I am replying) hasn't been active for quite a while, because a lot of Push discussion has moved elsewhere. It's fine for you to continue to use it, and in fact your message was a good reminder to me that I should tell other active Pushers that they should subscribe if they are not already subscribed. That said, you might also want to know about <a href="https://push-language.hampshire.edu" class="">https://push-language.hampshire.edu</a>, which is much more active but also not fully public. If you go there now you will only be able to see topics in the public "Orientation" category, but not most of the activity on the site. If you're working with Push enough to want to become a member of the site then I would be happy to add you. However, the reason the site is not completely open is that we want to be free to discuss research and development ideas in roughly the way that one does in a co-located lab, so we don't worry too much about looking foolish for suggesting wacky ideas, or about getting scooped. The idea is to treat it more or less like we're in a university research lab together, rather than in the wide open web. So if I add you as a member, I would ask you to treat it in roughly that way.</div><div class=""><br class=""></div><div class="">Best,</div><div class=""><br class=""></div><div class=""> -Lee</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 9, 2016, at 5:39 PM, Patrik Kimmeswenger <<a href="mailto:patrik.kimmeswenger@gmail.com" class="">patrik.kimmeswenger@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
  

    <meta http-equiv="content-type" content="text/html; charset=utf-8" class="">
  
  <div bgcolor="#FFFFFF" text="#000000" class=""><p class="">Hello,</p><p class="">my name is Patrik Kimmeswenger and I am studying <a href="x-msg://222/pen%20https://www.fh-ooe.at/en/hagenberg-campus/studiengaenge/master/software-engineering/" class="">Software
        Engineering at the University of Applied Sciences in Hagenberg</a>.
      Currently I am working on my master thesis with the title
      "Implementation and Ancestry Analysis of PushGP in HeuristicLab".
      Thereby I am advised by DI (FH) Miachel Kommenda MSc, a member of
      the <a href="http://dev.heuristiclab.com/" class="">HeuristicLab</a> team.
      <br class="">
    </p><p class="">My implementation of PushGP 3.0 written in C# is already able to
      parse and evaluate Push programs. At this point I want to thank
      you for the create language description. It is very detailed and
      easy to understand. However I have a question regarding <a href="http://faculty.hampshire.edu/lspector/push3-description.html#RandomCode" class="">Random
        Code Generation</a>. I am not able to understand what is meant
      by the term "If this is an ephemeral random constant". I took a
      look at the Java implementation (Jsh) and noticed that a random
      number is used to determine which random generator should be used
      whereby a random generator for each data type (integer, float,
      boolean) exists and another one which is responsible for
      instructions. This seems to be a nice solution but I don't
      understand where an "ephemeral random constant" is used?</p><p class="">Sincerely,<br class="">
      Patrik Kimmeswenger<br class="">
    </p>
    <h1 class=""><br class="">
    </h1>
  </div>

_______________________________________________<br class="">Push mailing list<br class=""><a href="mailto:Push@lists.hampshire.edu" class="">Push@lists.hampshire.edu</a><br class="">https://lists.hampshire.edu/mailman/listinfo/push<br class=""></div></blockquote></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; line-height: normal; border-spacing: 0px;"><span class="Apple-style-span" style="font-size: 12px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><p style="margin: 0px;" class=""></p><div class=""><div apple-content-edited="true" style="orphans: auto; widows: auto;" class="">--</div><div apple-content-edited="true" style="orphans: auto; widows: auto;" class="">Lee Spector, Professor of Computer Science</div><div apple-content-edited="true" style="orphans: auto; widows: auto;" class="">Director, Institute for Computational Intelligence<br class="">Hampshire College, Amherst, Massachusetts, USA<br class=""><a href="mailto:lspector@hampshire.edu" class="">lspector@hampshire.edu</a>, <a href="http://hampshire.edu/lspector/" class="">http://hampshire.edu/lspector/</a>, 413-559-5352</div></div></div></div></span></div></span></div></span></div></span></span></div></div></div>
</div>
<br class=""></body></html>