def gene(caso,nume,accion,loops,filename): cadena = ap1.read_config_case("../config.ini","case_"+caso)['actions'] predicado='' if (not cadena==''): dic={} cade=cadena.split(':') for e in cade: elem=e.split(',') dic[elem[0]]=elem[1] if not dic.get(accion)==None: predicado= ap1.load_pred_aux("../examples/"+caso+"/models/aux_pred_2.als") print predicado #predicado=predicado.split("\n")[0] #os.system(" sed -i 's/\/\*INI_PRE.*FIN_PRE\*\//\/\*INI_PRE\*\/"+predicado+"\/\*FIN_PRE\*\//g ' "+filename) #sys.exit(0) return 0
def gen_input_fact_i32_jt(caso,i,lista,accion,loops,pin,result): #lee el elemento i de la lista i lo reemplaza en resultado.als out=[] #aca if (i<len(lista)): cade=lista[i] data=cade.split('?') pares={} for e in data: s=e.split(':') pares[s[0]]=s[1] param='' t=int(pares['size'])+loops+1 n=int(pares['cantidad_enteros'])+loops+1 #scope_int=minBitwidthToRepresent(t) #check='check programa_wap for '+str(t)+" but "+str(n)+" JavaPrimitiveIntegerValue, "+str(scope_int)+" int" check='check programa_wap for 0 but '+str(n)+" JavaPrimitiveIntegerValue " parametros_de_accion_rota=pin res=[] cade='' p=0 f=0 for e in pin: if (e[1]=='JavaPrimitiveIntegerValue' and p==0): res.append( "QF."+e[0]+"_0="+pares['pi32_a']) #cade=cade+" "+e[0]+"="+ap1.bin_to_int(pares['pi32_a']) p=1 else: if(e[1]=='JavaPrimitiveIntegerValue' and p==1): res.append( "QF."+e[0]+"_0="+pares['pi32_b']) # cade=cade+" "+e[0]+"="+ap1.bin_to_int(pares['pi32_b']) if (e[1]=='Int'and f==0): res.append("eq[QF."+e[0]+"_0,"+pares['indice_a']+"]") cade=cade+" "+e[0]+"="+pares['indice_a'] f=1 else: if (e[1]=='Int'and f==1): res.append("QF."+e[0]+"_0="+pares['indice_b']) cade=cade+" "+e[0]+"="+pares['indice_b'] out.append(pares[' lista']) print pares[' lista'] print 'action to fix: '+accion+"("+cade+")" out.append('action to fix: '+accion+"("+cade+")") parametros_de_acciones="fact { "+(" and ").join(res)+"} " cadena = ap1.read_config_case("../config.ini","case_"+caso)['actions'] predicado='' if (not cadena==''): dic={} cade=cadena.split(':') for e in cade: elem=e.split(',') dic[elem[0]]=elem[1] # obtiene el scope de la accion almacenada para saber que archivo de aux_pred invocar. tenganse en cuenta que # por ejemplo para el predicado que indica el size depende de la entrada y de la accion if not dic.get(accion)==None: predicado= ap1.load_pred_aux("../examples/"+caso+"/models/aux_pred_"+str(int(dic.get(accion))+ int(pares['size']))+".als") predicado=predicado.split("\n")[0] pegar=pares['estado']+" "+parametros_de_acciones+" "+check+" "+predicado os.system(" sed -i 's/\/\*INI_PRE.*FIN_PRE\*\//\/\*INI_PRE\*\/"+pegar+"\/\*FIN_PRE\*\//g ' resultado.als") result[i]=out return [pares['size'],result]