1 package DX::ResolutionSpace;
3 use DX::Step::Backtrack;
4 use DX::Step::ResolveProposition;
7 has proposition => (is => 'ro');
9 has geometry_depends_on => (is => 'ro', required => 1);
11 has aperture => (is => 'ro', required => 1);
13 has members => (is => 'ro', required => 1);
18 [ symbol => 'rspace' ],
19 [ block => $self->members ],
25 return undef unless my ($first) = @{$self->members};
26 return $first->next_resolution;
29 sub remaining_resolution_space {
31 die "Sense makes not" unless my ($first, @rest) = @{$self->members};
32 return $self->but(members => [ $first->remainder, @rest ]);
37 return DX::Step::Backtrack->new unless @{$self->members};
38 return DX::Step::ResolveProposition->new(resolution_space => $self);