Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package jason.stdlib;
 
public class setof extends DefaultInternalAction {
    @Override public int getMinArgs() { return 3; }
    @Override public int getMaxArgs() { return 3; }
    @Override public Term[] prepareArguments(Literal bodyUnifier un) {
        return body.getTermsArray(); // we do not need to clone nor to apply for this internal action
    }
    @Override protected void checkArguments(Term[] argsthrows JasonException {
        super.checkArguments(args); // check number of arguments
        if (! (args[1] instanceof LogicalFormula))
            throw JasonException.createWrongArgument(this,"second argument must be a formula");
    }
    @Override
    public Object execute(TransitionSystem tsUnifier unTerm[] argsthrows Exception {
        checkArguments(args);
        Term var = args[0];
        LogicalFormula logExpr = (LogicalFormula)args[1];
        Set<Termall = new TreeSet<Term>();
        Iterator<Unifieriu = logExpr.logicalConsequence(ts.getAg(), un);
        while (iu.hasNext()) {
            Unifier nu = iu.next();
            Term vl = var.clone();
            vl.apply(nu);
            all.add(vl);
        }
        return un.unifies(args[2], setToList(all));
    }
    
    // copy the set to a new list
    private ListTerm setToList(Set<Termset) {
        ListTerm result = new ListTermImpl();
        ListTerm tail = result;
        for (Term tset)
            tail = tail.append(t.clone());
        return result;
    }
New to GrepCode? Check out our FAQ X