fncon.addConstraint(new BoundConstraint(null, fn));
fncon.addConstraint(new LiteralConstraint(fibo_has_value, Long.valueOf(-1)));
rete.getRulebase().addRule(new Rule("recurse", fncon, new IAction()
f1con.addConstraint(new LiteralConstraint(fibo_has_value, Long.valueOf(-1)));
f1con.addConstraint(new LiteralConstraint(fibo_has_sequence, Integer.valueOf(1)));
rete.getRulebase().addRule(new Rule("bootstrap1", f1con, new IAction()
f2con.addConstraint(new LiteralConstraint(fibo_has_value, Long.valueOf(-1)));
f2con.addConstraint(new LiteralConstraint(fibo_has_sequence, Integer.valueOf(2)));
rete.getRulebase().addRule(new Rule("bootstrap2", f2con, new IAction()
new Object[]{f1seq, new FunctionCall(new Sub(), new Object[]{f2seq, Integer.valueOf(1)})})));
rete.getRulebase().addRule(new Rule("calc", new AndCondition(new ICondition[]{f00con, f11con, f22con}), new IAction()