1 package DX::ResolutionSpace;
3 use DX::Utils qw(step);
4 use DX::Step::Backtrack;
7 has proposition => (is => 'ro');
9 has geometry_depends_on => (is => 'ro', required => 1);
11 has members => (is => 'ro', required => 1);
15 return undef unless my ($first) = @{$self->members};
16 return $first->next_resolution;
19 sub remaining_resolution_space {
21 die "Sense makes not" unless my ($first, @rest) = @{$self->members};
22 return $self->but(members => [ $first->remainder, @rest ]);
27 return DX::Step::Backtrack->new unless @{$self->members};
29 resolves => $self->proposition,
30 resolution_space => $self,