depends_on { CONTENTS_OF 0.X }
}
backtrack
- remaining resolution_space {
- proposition eq ?X {{ a 1 b 2 c 3 }}
- geometry_depends_on { CONTENTS_OF 0.X }
- aperture { VALUE_SET 0.X }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq XValue 2
- geometry_depends_on { CONTENTS_OF 0.XValue }
- aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.a }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition member_at Y ?YKey ?YValue
geometry_depends_on { INDICES_OF 0.Y; TYPE_OF 0.YKey; TYPE_OF 0.YValue }
aperture { VALUE_SET 0.YKey; VALUE_SET 0.YValue }
depends_on { CONTENTS_OF 0.X }
}
backtrack
- remaining resolution_space {
- proposition eq ?X {{ a 1 b 2 c 3 }}
- geometry_depends_on { CONTENTS_OF 0.X }
- aperture { VALUE_SET 0.X }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq XValue 2
- geometry_depends_on { CONTENTS_OF 0.XValue }
- aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.a }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition member_at Y ?YKey ?YValue
geometry_depends_on { INDICES_OF 0.Y; TYPE_OF 0.YKey; TYPE_OF 0.YValue }
aperture { VALUE_SET 0.YKey; VALUE_SET 0.YValue }
depends_on { CONTENTS_OF 0.X }
}
backtrack
- remaining resolution_space {
- proposition eq ?X {{ a 1 b 2 c 3 }}
- geometry_depends_on { CONTENTS_OF 0.X }
- aperture { VALUE_SET 0.X }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq XValue 2
- geometry_depends_on { CONTENTS_OF 0.XValue }
- aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.a }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition member_at Y ?YKey ?YValue
geometry_depends_on { INDICES_OF 0.Y; TYPE_OF 0.YKey; TYPE_OF 0.YValue }
aperture { VALUE_SET 0.YKey; VALUE_SET 0.YValue }
depends_on { CONTENTS_OF 0.Y }
}
backtrack
- remaining resolution_space {
- proposition eq ?Y {{ d 1 e 2 f 3 }}
- geometry_depends_on { CONTENTS_OF 0.Y }
- aperture { VALUE_SET 0.Y }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq YValue 2
- geometry_depends_on { CONTENTS_OF 0.YValue }
- aperture { VALUE_SET 0.YValue; VALUE_SET 0.Y.d }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition eq XValue 2
geometry_depends_on { CONTENTS_OF 0.XValue }
aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.b }
depends_on { CONTENTS_OF 0.Y }
}
backtrack
- remaining resolution_space {
- proposition eq ?Y {{ d 1 e 2 f 3 }}
- geometry_depends_on { CONTENTS_OF 0.Y }
- aperture { VALUE_SET 0.Y }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq YValue 2
- geometry_depends_on { CONTENTS_OF 0.YValue }
- aperture { VALUE_SET 0.YValue; VALUE_SET 0.Y.f }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition eq XValue 2
geometry_depends_on { CONTENTS_OF 0.XValue }
aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.b }
depends_on { CONTENTS_OF 0.X }
}
backtrack
- remaining resolution_space {
- proposition eq ?X {{ a 1 b 2 c 3 }}
- geometry_depends_on { CONTENTS_OF 0.X }
- aperture { VALUE_SET 0.X }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq XValue 2
- geometry_depends_on { CONTENTS_OF 0.XValue }
- aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.c }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition member_at Y ?YKey ?YValue
geometry_depends_on { INDICES_OF 0.Y; TYPE_OF 0.YKey; TYPE_OF 0.YValue }
aperture { VALUE_SET 0.YKey; VALUE_SET 0.YValue }
depends_on { CONTENTS_OF 0.X }
}
backtrack
- remaining resolution_space {
- proposition eq ?X {{ a 1 b 2 c 3 }}
- geometry_depends_on { CONTENTS_OF 0.X }
- aperture { VALUE_SET 0.X }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq XValue 2
- geometry_depends_on { CONTENTS_OF 0.XValue }
- aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.c }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition member_at Y ?YKey ?YValue
geometry_depends_on { INDICES_OF 0.Y; TYPE_OF 0.YKey; TYPE_OF 0.YValue }
aperture { VALUE_SET 0.YKey; VALUE_SET 0.YValue }
depends_on { CONTENTS_OF 0.X }
}
backtrack
- remaining resolution_space {
- proposition eq ?X {{ a 1 b 2 c 3 }}
- geometry_depends_on { CONTENTS_OF 0.X }
- aperture { VALUE_SET 0.X }
- members { }
- }
- backtrack
fail_recheck
}
backtrack
remaining resolution_space {
- proposition eq XValue 2
- geometry_depends_on { CONTENTS_OF 0.XValue }
- aperture { VALUE_SET 0.XValue; VALUE_SET 0.X.c }
- members { }
-}
-backtrack
-remaining resolution_space {
proposition member_at Y ?YKey ?YValue
geometry_depends_on { INDICES_OF 0.Y; TYPE_OF 0.YKey; TYPE_OF 0.YValue }
aperture { VALUE_SET 0.YKey; VALUE_SET 0.YValue }
package DX::Step::ResolveProposition;
use DX::Step::EnterRecheck;
+use DX::Step::CompleteResolution;
use DX::Step::Backtrack;
use DX::Utils qw(expand_deps);
] ],
] ]
] ];
- my $ns = do {
- if (my $prop = $old_ss->next_proposition) {
- DX::Step::ConsiderProposition->new(
- proposition => $prop
- )
- } else {
- $old_ss->on_solution_step
- }
- };
+ my $rspace = $self->resolution_space;
my $ss = $old_ss->but(
- next_step => $ns,
- decisions_taken => [
- [ $self->resolution_space, $old_ss ],
- @{$old_ss->decisions_taken}
- ],
+ next_step => DX::Step::CompleteResolution->new(
+ original_search_state => $old_ss,
+ resolution_space => $rspace,
+ )
);
my $old_hyp = $old_ss->current_hypothesis;
(my $hyp, my @recheck) = $old_hyp->with_resolution(
next_step => DX::Step::EnterRecheck->new(
proposition_list => \@recheck,
on_completion_step => $ss->next_step,
- on_failure_step => DX::Step::Backtrack->new,
+ on_failure_step => $rspace->remaining_resolution_space->next_step,
),
);
}