has current_search_state => (
is => 'ro', isa => SearchState, required => 1,
handles => [ qw(
- current_hypothesis next_step propositions alternatives
+ current_hypothesis next_step propositions
) ],
);
sub find_solution {
my ($self) = @_;
my $state = $self->current_search_state;
- while ($state and $state->next_proposition) {
+ while ($state and (not $state->is_solution_state)) {
$state = $state->with_one_step;
}
return undef unless $state;
- trace 'search.solution.hyp' => $state->current_hypothesis;
return $self->but(current_search_state => $state);
}
-sub force_backtrack {
- my ($self) = @_;
- my $new_ss = $self->current_search_state->force_backtrack;
- return undef unless $new_ss;
- return $self->but(current_search_state => $new_ss);
-}
-
sub find_next_solution {
my ($self) = @_;
- return undef unless my $bt = $self->force_backtrack;
- return $bt->find_solution;
+ my $state = $self->current_search_state->with_one_step;
+ return $self->but(current_search_state => $state)->find_solution;
}
1;