New notes (November 4th, 2013):

1) aggregation of MinImp and MinFun definitions

kagreg minimp.k minfun.k

1') manual steps of aggregation
- manually remove "LKResult" Id ":" KResult production
- manually rename $PGM1 into $PGM
- manually change <env1> .Map </env1> into
  <env1> $CFG:Map </env1>

2) add circularity

Rule to be added for handling circularities
      rule 
<t1>
<k1> LStmt Label:Id : skip ~> (while (IName:Id i< NName:Id) do (((SName:Id := (SName i+ IName))
                  ; (IName := (IName i+ 1))) ; (LStmt Label : skip))) => .K
           </k1>
             <env1>... 
                      (IName |-> I:Int)
             (NName |-> N:Int)
                       (SName |-> S:Int)
           ...</env1>
             </t1>
<k2>
                LFExp Label:Id : (((fix F:Id (lambda X:Id .
(lambda Y:Id . (fif (X f== 0) fthen Y felse 
           (let NIName:Id be X f- 1 in
            (let SEName:Id be Y f+ X in
          (LFExp Label :
                        ((F NIName) SEName)))))))) NI:Int)
                         SE:Int) => .K
           </k2>
       when
                         (NI ==Int (N -Int I))
             andBool ((2 *Int SE) ==Int ((N +Int NI +Int 1) *Int I))
             andBool ((2 *Int S) ==Int (I *Int (I -Int 1)))

2') compare against aggregation-final.k (result.k should look like it
after these steps)

3) compilation

kompile --kcells "k1 k2" result --backend symbolic

4) execute search command:

krun --search sum9symbolic.minimp -cCFG "`cat sum9symbolic.cfg`" -cPGM2 "`cat prove9symbolic.minfun`" -cPC "(0 <=Int #symInt(i)) andBool (#symInt(i) <=Int #symInt(n)) andBool (#symInt(ni) ==Int #symInt(n) -Int #symInt(i)) andBool (2 *Int #symInt(s) ==Int (#symInt(i) *Int (#symInt(i) -Int 1))) andBool (((2 *Int #symInt(se)) ==Int ((#symInt(n) +Int #symInt(ni) +Int 1) *Int #symInt(i))))" --parser "kast -groundParser" 
