sub new_search_state_for {
my ($self, $prop_seq) = @_;
- my @local_names = map { keys %{$_->introduces_names} }
+ my @local_names = map { keys %{$_->introduced_names} }
@{$prop_seq->members};
my $scope = DX::Scope->new(
predicates => $self->predicates,
resolved_propositions => DX::ResolvedPropositionSet->new_empty,
outstanding_propositions => $prop_seq->members,
actions => [],
+ action_applications => [],
action_policy => DX::ActionPolicy::Allow->new,
);
return DX::SearchState->new(
sub with_additional_proposition {
my ($self, $prop) = @_;
my $prop_seq = $self->proposition_sequence
- ->but_append_proposition($prop);
+ ->with_additional_proposition($prop);
my $sol_ss = $self->new_search_state_for($prop_seq)
->find_solution;
- die "No solution" unless $sol_ss;
+ die "No solution\n" unless $sol_ss;
$self->but(
proposition_sequence => $prop_seq,
search_state => $sol_ss,
);
}
+sub with_forced_backtrack {
+ my ($self) = @_;
+ my $next_ss = $self->search_state->find_next_solution;
+ die "No next solution\n" unless $next_ss;
+ $self->but(search_state => $next_ss);
+}
+
1;