succ  prec  indice 

Predicato "extend_clause_loop/4"


*
/******************************************************************/
/*                                                                */
/*  call        : extend_clause_loop (+NEGATIVE,+POSITIVE,+SEED,  */
/*                                    -CLAUSE)                    */
/*                                                                */
/*  arguments   : NEGATIVE  = Negative examples of GOAL           */
/*                POSTITIVE = Positive examples left to be covered*/
/*                SEED      = The most general clause defining    */
/*                            the predicate.                      */
/*                CLAUSE    = The extended clause which covers no */
/*                            negative examples, or which cannot  */
/*                            be improved.                        */
/*                                                                */
/******************************************************************/
/* This predicate corresponds to the "inner loop" in Quinlan 90   */
/* and in a general to specific manner. At each iteration a       */ 
/* premises is determined and added to SEED, until it covers no   */  
/* negative examples, or until the information gain does not      */ 
/* improve. If the latter happens, determinate literals may be    */
/* added to the clause (see Quinlan 91), depending on the value   */
/* of the switch foil_det_lit_bound/1. This switch determines the */
/* maximum number of determinate literals which can be added to   */
/* the clause.                                                    */
/******************************************************************/
extend_clause_loop(Nxs0, Pxs0, Clause0, Clause) :-
        ( Nxs0 = [] ->
              Clause = Clause0
        ; write('Specializing current clause: '), nl,
          portray_clause(Clause0), 
          nl, write('Covered negatives:'), nl, write(Nxs0), nl,
          nl, write('Covered positives:'), nl, write(Pxs0), nl, nl,
          generate_possible_extensions(Clause0, Ls),
          info_value(Clause0, Pxs0, Nxs0, Info),
          best_next_clause(Ls, Nxs0, Pxs0, Clause0, Info, 0, Clause0, Clause1),
          ( Clause0 == Clause1 ->
                foil_det_lit_bound(DLB),
                nl,
                write('No improvement -- trying determinate literals ...'), nl,
                bounded_determinate_literals(DLB, Ls, Clause0, Pxs0, Nxs0, Ds),
                ( Ds = [] ->
                      write('No determinate literals found.'), nl,
                      covered_examples(Clause1, Nxs0, Nxs1),
                      write('WARNING -- clause covers negatives:'), nl,
                      write(Nxs1), nl,
                      Clause = Clause1
                ; write('Adding determinate literals: '), write(Ds), nl, 
                  add_literals(Ds, Clause0, Clause2),
                  covered_examples(Clause2, Nxs0, Nxs1),
                  extend_clause_loop(Nxs1, Pxs0, Clause2, Clause)
                )
          ; covered_examples(Clause1, Pxs0, Pxs1),
            covered_examples(Clause1, Nxs0, Nxs1),
            extend_clause_loop(Nxs1, Pxs1, Clause1, Clause)
          )
        ).
*


 
 
 
 


 succ  prec  indice