Slawomir Kolodynski wrote:
> 
> I am trying to figure out a way to tell FriCAS that 
> limit(erf(sqrt(c)*x),x=%plusInfinity) is 1 (say, I know that c>0). 
> To do that I define a rule:
> 
> limerf := rule limit(erf(sqrt(c)*x),x=%plusInfinity) == 1
> 
> However, when I try to apply the rule:
> 
> limerf(limit(erf(sqrt(c)*x),x=%plusInfinity))
> 
> I get
> 
>  Cannot find a definition or applicable library operation named 
>       limerf with argument type(s) 
>                                    failed
> 
> It looks like FriCAS first tries to evaluate the argument of the rule (and 
> gets "failed"), then tries to match the rule pattern to the result.  
> Is there a way to prevent the rule to evaluate its argument before pattern 
> matching? Or I am doing something wrong here?

In FriCAS 'limit' is an operation, not an expression.  The
same with '=' (which produces equation, not an expression).
There is also problem with types: '%plusInfinity' is not an
expression.

To get something in your spirit one needs to work with expressions:

lim := operator 'lim

limerf := rule lim(erf(sqrt(c)*x),infinity) == 1


OTOH if purpose is stricly to compute limit, than you can do

e1 := eval(erf(sqrt(c)*x), sqrt(c) = d^2)
limit(e1, x=%plusInfinity)

If you need to undo the substitution in part of expression
you can do more complicated thing:

(1) -> pos := operator 'pos

   (1)  pos
                                                          Type: BasicOperator
(2) -> e1 := eval(erf(sqrt(c)*x), sqrt(c) = pos(sqrt(c))^2)

                   +-+ 2
   (2)  erf(x pos(\|c ) )
                                                    Type: Expression(Integer)
(3) -> limit(e1, x=%plusInfinity)

   (3)  1
                      Type: Union(OrderedCompletion(Expression(Integer)),...)
(4) -> eI := Expression(Integer)

   (4)  Expression(Integer)
                                                                   Type: Type
(5) -> eval(e1, [name(pos)], [2], [(x : eI) : eI +-> x])

              +-+
   (5)  erf(x\|c )
                                                    Type: Expression(Integer)

-- 
                              Waldek Hebisch

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To post to this group, send email to fricas-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to