+//--------------------------------------------------------------------------------------------
+//--
+void CSistemaAutonomo::plan()
+{
+ double p = 1.0;
+ m_plan.clear();
+ planificar(p_entorno->datos, m_datos_finales, m_plan, p);
+ curr_theory = m_plan.begin();
+}
+
+//--------------------------------------------------------------------------------------------
+//--
+#include <iostream> // XXX FIXME
+bool CSistemaAutonomo::has_next_theory()
+{
+ return curr_theory != m_plan.end();
+}
+
+//--------------------------------------------------------------------------------------------
+//--
+CTeoria* CSistemaAutonomo::get_next_theory()
+{
+ if (curr_theory == m_plan.end())
+ {
+ m_datos_finales.clear();
+ return 0;
+ }
+ else
+ {
+ return &*(curr_theory++);
+ }
+}
+
+//--------------------------------------------------------------------------------------------
+//--
+bool CSistemaAutonomo::validate_theory(CTeoria* t)
+{
+ bool result ;
+
+ result = verificar_condicion(t->datos_finales) ;
+
+
+ // Si fallo la teoria
+ if (!result)
+ {
+ // Aplico heuristicas de correccion
+ this->heurisitca_retraccion(*t) ;
+ }
+ else
+ {
+ t->p++ ;
+ }
+
+ // Aplico heuristicas de observacion
+ this->heurisitca_observacion(*t) ;
+ this->heurisitca_generalizacion(*t);
+
+ return result;
+}