public override object Execute(Reasoner reasoner, Unifier un, ITerm[] args) { CheckArguments(args); ITerm l1 = args[0]; ITerm l2 = args[1]; INumberTerm size = null; if (l1.IsList()) { IListTerm lt = (IListTerm)l1; size = new NumberTermImpl(lt.Size()); } else if (l1.IsString()) { IStringTerm st = (IStringTerm)l1; size = new NumberTermImpl(st.GetString().Length); } if (size != null) { return(un.Unifies(l2, size)); } return(false); }