﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
1205	TOL se queda colgado manejando una expresión de conjunto temporal vacío	Víctor de Buen Remiro	Víctor de Buen Remiro	"La siguiente expresión deja colgado a TOL durante horas aunque al final acaba dando un mensaje de warning:
{{{
#!java
TimeSet ConfUniversal        = D(1)*M(1) - WD(7);
TimeSet Tiradentes           = D(21)*M(4) - WD(7);
TimeSet DiaDoTrabalho        = D(1)*M(5) - WD(7);
TimeSet IndepBras            = D(7)*M(9) - WD(7);
TimeSet NossaSenApar         = D(12)*M(10) - WD(7);
TimeSet Finados              = D(2)*M(11) - WD(7);
TimeSet ProclamacaoRepublica = D(15)*M(11) - WD(7);
TimeSet Natal                = D(25)*M(12) - WD(7);
 
TimeSet TercaCarnaval = Succ(Easter,-47);
TimeSet Paixao                = Succ(Easter,-2);
TimeSet Corpus   = Succ(Easter,60);
 
TimeSet ConcienciaNegra      = D(20)*M(11) - WD(7); // Municipal SP
TimeSet CidadeSaoPaulo       = D(25)*M(1) - WD(7);  // Municipal SP
TimeSet RevolConst           = D(9)*M(7) - WD(7);   // Estadual SP
TimeSet FinA = D(31)*M(12) - WD(7);   //no es festivo, posiblemente la gente trabaja, pero tiene comportamiento similar al festivo.


TimeSet festivos = ConfUniversal  + FinA       +Tiradentes+DiaDoTrabalho 
       +IndepBras            +NossaSenApar         +Finados             
 +ProclamacaoRepublica +Natal                +TercaCarnaval +Paixao               
 +Corpus   +ConcienciaNegra      +CidadeSaoPaulo       +RevolConst + FinA;  
 
TimeSet festivodomingo = festivos * WD(7);
Serie Diafestivodomingo = CalInd(festivodomingo, Diario);
}}}

El problema es que {{{festivos}}} carece de domingos por construcción por lo que {{{festivodomingo}}} es el conjunto temporal vacío pero TOL no lo sabe ni hay forma de que lo sepa. Al intentar calcular el sucesor de una fecha en la intersección no hay otra forma que ver si el sucesor en el primero pertenece al segundo o viceversa y en caso contrario continuar sucesivamente, lo cual en este caso es para siempre jamás pues nunca encontrará un sucesor.

En cambio, esta otra expresión del mismo tipo 

{{{
#!java
TimeSet festivodomingo = WD(3) * WD(7);
Serie Diafestivodomingo = CalInd(festivodomingo, Diario);

}}}

da el mensaje de forma inmediata

''Warning: [1] BTmsIntersection::Successor ha sido abortado porque se ha salido del rango de cálculo 10000 veces para el TimeSet $tmp$ operando entre las fechas [y2011m01d01,y2203m09d07]
Se asumirá en los resultados el comportamiento de TimeSet acotado.''

Aunque TOL no puede asegurar que no vaya a existir un sucesor más adelante considera sospechoso haber sobrepasado los 10000 intentos sin conseguirlo.

Hay que ver porqué no ocurre en el primer caso o encontrar otro criterio de parada más eficaz."	defect	closed	highest	Mantainance	TimeAlgebra	head	blocker	fixed		palmagro@…
