use DX::Op::Materialize;
use DX::Op::Prop;
use DX::Op::Exists;
+use DX::Op::Predicate;
use List::Util qw(reduce);
has rules => (is => 'ro', default => sub { {} });
+sub add_predicate {
+ my ($self, $name, $vars, @cases) = @_;
+ my $full_name = join('/', $name, scalar @$vars);
+ push @{$self->rules->{$full_name}}, DX::Op::Predicate->new(
+ arg_names => $vars, arg_cases => \@cases
+ );
+}
+
sub add_rule {
my ($self, $name, $vars, @body) = @_;
my $full_name = join('/', $name, scalar @$vars);