1 package DX::Proposition;
3 use DX::Step::ConsiderProposition;
7 has predicate => (is => 'ro', isa => Str, required => 1);
9 has args => (is => 'ro', isa => ArrayRef[Str|Value], required => 1);
11 has introduced_names => (is => 'ro', isa => HashRef[One], required => 1);
13 has required_names => (is => 'ro', isa => HashRef[One], required => 1);
18 [ symbol => $self->predicate ],
22 : [ symbol => $self->introduced_names->{$_} ? "?$_" : $_ ]
28 my ($self, $scope) = @_;
29 my $predicate = $scope->lookup_predicate($self->predicate);
30 my @args = map { ref($_) ? $_ : $scope->lookup($_) } @{$self->args};
31 #if (my $step = $scope->known_facts->resolution_step_for($predicate, @args)) {
34 return $predicate->resolution_step_for($self, @args);
39 DX::Step::ConsiderProposition->new(proposition => $self);