 suggested edits or furthur information required.

A:

You wrote, "b=a^3 is the only case where undefined solution is possible."
Hence it looks like you made a typo with your brackets, and intended the expression to instead be,
expr := (a-b)/(b-a^3);

The discont command handles that example.
discont(expr, b);

                          / 3\ 
                         { a  }
                          \  / 

If you have more involved expressions then please show them (and constraints on other parameters such as a would not hurt to know, if you have such).
It's difficult to answer properly if you don't show your actual example, explicitly and in full.
[edit] Ok, you posted a more involved example elsewhere. You can use the discont or the singular commands.
expr2 := tan(a*(b+log(1+(epsilon*a*r)/(c*s)))/2):

ans := [singular(expr2, {c, b})]:
ans := map[2](remove,u->lhs(u)=rhs(u), ans):

lprint(%);
  [{c = 0}, {c = -epsilon*a*r/s},
   {b = - (-2*_Z1*Pi+a*ln((a*epsilon*r+c*s)/(c*s))-Pi)/a}]

eval(expr2, ans[1]);
  Error, numeric exception: division by zero

eval(expr2, ans[2]);
  Error, (in ln) numeric exception: division by zero

eval(expr2, ans[3]):
simplify(%);
  Error, (in tan) numeric exception: division by zero

ans1 := map[2](`=`,c,discont(expr2, c)):
lprint(%);
  {c = 0, c = epsilon*a*r/(s*(exp((2*Pi*_Z2-a*b+Pi)/a)-1)),
   c = -epsilon*a*r/s}

ans2 := map[2](`=`,b,discont(expr2, b)):
lprint(%);
  {b = -(a*ln((a*epsilon*r+c*
suggested edits or furthur information required. 

 A: 

 You wrote, " b = a^3 is the lone subject where undefined solution is possible. " 
 Hence it looks like you make a typo with your brackets, and mean the construction to instead be, 
 expr: = (a - b)/(b - a^3); 

 The discont instruction cover that example. 
 discont(expr, b); 

                           / 3\ 
                          { a   } 
                           \   / 

 If you get more involved expressions then please show them (and constraints on other parameters such as a would not ache to know, if you have such). 
 It's difficult to suffice properly if you don't show your actual model, explicitly and in full. 
 [ edit ] Ok, you post a more involved example elsewhere. You can use the discont or the singular commands. 
 expr2: = tan(a*(b+log(1+(epsilon*a*r)/(c*s)))/2 ): 

 autonomic nervous system: = [ singular(expr2, { c, b }) ]: 
 ans: = map[2](remove, u->lhs(u)=rhs(u), ans ): 

 lprint(%); 
   [ { c = 0 }, { c = -epsilon*a*r / s }, 
    { b = - (-2*_Z1*Pi+a*ln((a*epsilon*r+c*s)/(c*s))-Pi)/a } ] 

 eval(expr2, ans[1 ]); 
   Error, numeric exception: division by zero 

 eval(expr2, ans[2 ]); 
   Error, (in ln) numeric exception: division by zero 

 eval(expr2, ans[3 ] ): 
 simplify(%); 
   Error, (in tan) numeric exception: division by zero 

 ans1: = map[2](`=`,c, discont(expr2, c) ): 
 lprint(%); 
   { c = 0, c = epsilon*a*r/(s*(exp((2*Pi*_Z2 - a*b+Pi)/a)-1) ), 
    c = -epsilon*a*r / s } 

 ans2: = map[2](`=`,b, discont(expr2, b) ): 
 lprint(%); 
   { b = -(a*ln((a*epsilon*r+c *
 suhgested edits or furthur information required.

A:

Bou wrofe, "b=a^3 is the only case where undefinxd silutiin is possible."
Hence it looks line you mqde e typo with your brackets, and jktendzd the expressiok to insteag be,
expr := (a-b)/(b-a^3);

Dhd biscont command handles that example.
qiscont(rxor, b);

                          / 3\ 
                         { a  }
                          \  / 

If you have mlre lnvolved expressiojs then pleqse fyow them (and constrainus on other karameters such as a would not hjrt tp know, if ioh jdve such).
It's diffpcult to answcg propesly if uou don't show nour ectuql example, explicitly and in full.
[edit] Oh, you posdeb a more involved exanpoe elvewhare. Hiu zan uxe the dlscknt or the singular cimmands.
expr2 := tan(a*(b+lpg(1+(qixilon*a*r)/(c*s)))/2):

ans := [singtlwr(expr2, {c, b})]:
ans := map[2](remove,u->lhs(u)=rhs(u), ans):

lpgint(%);
  [{c = 0}, {c = -epsilon*a*r/s},
   {b = - (-2*_Z1*Pi+a*ln((a*epsilon*r+c*s)/(c*d))-Pi)/a}]

eval(evpr2, ans[1]);
  Error, numeric exception: division by zero

aval(eepf2, auw[2]);
  Erfir, (in ln) numeric exception: division by zero

eval(qspt2, sns[3]):
simplify(%);
  Evror, (in tan) numeriv fxvgption: divisiov by zzdo

zns1 := map[2](`=`,c,discont(exor2, c)):
lprynt(%);
  {x = 0, c = epfilom*a*r/(s*(exp((2*Pi*_Z2-a*b+Pi)/a)-1)),
   c = -epsilob*a*r/s}

ans2 := map[2](`=`,y,diwcont(expr2, b)):
lprint(%);
  {b = -(a*ln((a*epsnlon*r+c*
suggested edits or furthur information required. A: "b=a^3 the only where undefined solution like made a typo your brackets, and the expression to instead be, expr (a-b)/(b-a^3); The discont command handles that example. discont(expr, b); / 3\ { a \ / If you have more involved expressions then please show them (and on parameters as would not hurt to know, if you have such). It's difficult to answer properly if you show your actual example, explicitly and in full. Ok, you posted a involved example elsewhere. You can the or the commands. := ans := [singular(expr2, b})]: ans := map[2](remove,u->lhs(u)=rhs(u), ans): lprint(%); [{c = 0}, {c = -epsilon*a*r/s}, {b = - (-2*_Z1*Pi+a*ln((a*epsilon*r+c*s)/(c*s))-Pi)/a}] eval(expr2, Error, numeric by zero ans[2]); (in numeric exception: division eval(expr2, ans[3]): simplify(%); Error, (in tan) by zero ans1 := map[2](`=`,c,discont(expr2, c)): lprint(%); {c 0, c epsilon*a*r/(s*(exp((2*Pi*_Z2-a*b+Pi)/a)-1)), c = -epsilon*a*r/s} ans2 := b)): lprint(%); {b = -(a*ln((a*epsilon*r+c*
 suggested edits or furthur inFormation rEquirEd.

A:

you WrOte, "b=A^3 is tHe only case wherE UndeFined solution is possiblE."
HencE iT LookS LiKe you Made a tyPO wITH yoUr BrAckEtS, AnD inteNdeD the expRession to iNstEaD be,
expr := (a-b)/(b-a^3);

THE dIscont commAnd Handles that eXamPle.
disCoNt(eXPr, b);

                          / 3\ 
                         { a  }
                          \  / 

IF yoU have More inVOlved eXpressionS tHEn pleaSE show thEM (AnD conStraints on other paRAmETers such as a wouLd not hUrT To KNOw, iF yoU have such).
IT's DiffiCUlt to anSWeR PROpeRLy if you don't shOw your actuaL ExaMple, exPlIciTLy and iN full.
[EdIT] Ok, You posted a mOre iNvolved exAmple eLSewhere. yOu can usE the diScoNt oR the SInGuLar CoMManDS.
eXpr2 := TAn(a*(B+log(1+(epsiLoN*a*R)/(c*s)))/2):

anS := [sinGULAR(expR2, {c, b})]:
Ans := mAp[2](remOve,u->lhs(u)=rhs(u), aNs):

lPrinT(%);
  [{C = 0}, {c = -ePsiloN*a*r/s},
   {b = - (-2*_z1*Pi+a*Ln((A*epsiLon*r+c*s)/(C*s))-Pi)/a}]

EvAl(expr2, ans[1]);
  Error, nUmerIc exceptiOn: dIvIsiOn By zerO

Eval(exPr2, aNs[2]);
  ERror, (in lN) numeriC ExcEpTION: dIvision by zero

eval(eXpR2, ANs[3]):
Simplify(%);
  error, (iN TaN) nUMeric excEpTioN: divISIon by Zero

ANs1 := Map[2](`=`,c,discOnt(expR2, C)):
lPrInt(%);
  {c = 0, c = epSiLon*a*r/(s*(ExP((2*Pi*_z2-a*b+pi)/a)-1)),
   c = -ePSiloN*a*r/s}

anS2 := map[2](`=`,b,disCont(eXPr2, b)):
lprint(%);
  {b = -(a*ln((a*EPsilon*r+c*
 suggested edits or furthu r informat ion r equ ire d. 

A: 

Yo u wrote, "b=a^ 3  isthe only case where un defin ed solu t io n ispossibl e ." H enc eit  lo ok s  l ike y oumade atypo withyou rbrackets, an d  i ntended th e e xpression to  in steadbe ,
e x pr :=  (a -b)/( b-a^3) ; 

Thediscont c om m and ha n dles th a t  e xamp le.
discont(expr, b) ; 

                   /3\
                   {a }
                      \   /  

Ifyo u h a ve mor e inv ol v edexpressions  the n pleaseshow t h em (and constra ints o n o the r pa r am et ers  s u cha sa w o uld  not hur tto  know , if y o u  hav e s uch) .
It' s difficult t o a nswe r  pr operl y ifyoudo n't s how yo ur ac tu al example, exp lici tly and i n f ul l.[e dit]O k, you  po ste d a mor e invol v edex a m p le  elsewhere. You ca nu s ethe disc ont or th es ingularco mma nds. e xpr2:= t a n( a*(b+log (1+(ep s il on *a*r)/( c* s)))/2 ): 

a ns:= [s i ngul ar(exp r2, {c,b})]: ans := map[2]( r emove,u->lhs( u )= r h s( u ), a ns) :

lprint(% );
[{c= 0} ,  { c = -epsi lon*a *r / s} , 
   {b = - (-2*_Z1* Pi +a*ln( (a*ep silon*r+c*s)/ (c*s))-Pi) / a } ]

eval( expr 2 ,a ns[1]);
  Erro r, nu meric exce p tion: di visio n by zer o

eval(e x p r2, ans[ 2]) ;
 Er ror , (i n ln) numeric e xcep ti on: div isi on by z ero 

e val (ex pr 2, ans[3] ):
simpl if y( %) ;  E rror, (in tan)  n ume ri c e xcept i on: di visio n by  z er o 

a ns1 :=m ap [ 2 ](`= `, c, disc ont (e xpr2,  c)) : 
lp rint(%) ;
  {c =0,c  = e ps il on*a*r/ (s*(exp((2*Pi *_ Z2-a*b+Pi) /a )-1 )),
 c  = -epsi lon*a*r/s}

ans2 := map [ 2](`=`, b,d iscon t(ex pr2, b)): 
lp rint(% ); {b =-(a*ln ((a*e ps ilo n * r+c*
 suggested_edits or_furthur information required.

A:

You wrote,_"b=a^3 is_the_only case_where_undefined solution is_possible."
Hence it looks_like you made a_typo with your_brackets,_and intended the expression to instead be,
expr := (a-b)/(b-a^3);

The discont command handles that example.
discont(expr,_b);

_ ___    _    _ _       __/ 3\ 
_        _     _  ___   _{ a  }
  _     _      _     _    \_ /_

If you have more involved_expressions then please_show them_(and constraints on_other parameters such as a would_not hurt to_know, if you have such).
It's difficult_to_answer properly if_you_don't_show your_actual example, explicitly_and_in full.
[edit]_Ok,_you posted a more involved example_elsewhere._You can use the discont or the_singular commands.
expr2 := tan(a*(b+log(1+(epsilon*a*r)/(c*s)))/2):

ans_:=_[singular(expr2, {c, b})]:
ans :=_map[2](remove,u->lhs(u)=rhs(u), ans):

lprint(%);
  [{c =_0}, {c = -epsilon*a*r/s},
  _{b =_- (-2*_Z1*Pi+a*ln((a*epsilon*r+c*s)/(c*s))-Pi)/a}]

eval(expr2,_ans[1]);
  Error, numeric exception: division by zero

eval(expr2, ans[2]);
  Error,_(in ln) numeric exception: division by_zero

eval(expr2, ans[3]):
simplify(%);
  Error,_(in tan)_numeric_exception: division by_zero

ans1_:= map[2](`=`,c,discont(expr2,_c)):
lprint(%);
  {c = 0, c =_epsilon*a*r/(s*(exp((2*Pi*_Z2-a*b+Pi)/a)-1)),
 _ c = -epsilon*a*r/s}

ans2 := map[2](`=`,b,discont(expr2,_b)):
lprint(%);
  {b =_-(a*ln((a*epsilon*r+c*