? dotassoc;

Calculate

? dotassoc;

Calculate

### dotassoc

Run Example
```(%i1)dotassoc:true;
(%o1)                                true
(%i2) dotdistrib:true;
(%o2)                                true
(%i3) dot1simp:true;
(%o3)                                true
(%i4) dotconstrules:true;
(%o4)                                true
(%i5) dotexptsimp:true;
(%o5)                                true
(%i6) declare(a,scalar);
(%o6)                                done
(%i7) I(X):=(X^^-1);
<- 1>
(%o7)                           I(X) := X
(%i8) T(X):=X.I(T12).T14c.I(T14e).T12.I(X).T14e;
(%o8)  T(X) := X . (I(T12) . (T14c . (I(T14e) . (T12 . (I(X) . T14e)))))
(%i9) limit((1/a)*(T(T12+a*S)-T(T12)),a,0);
<- 1>              <- 1>                    <- 1>
(%o9) limit  ((a S) . T12      . T14c . T14e      . T12 . (T12 + a S)
a -> 0
<- 1>                    <- 1>
. T14e + T14c . T14e      . T12 . (T12 + a S)      . T14e - T14c)/a
(%i10) limit((1/a).((X+a).(X+a)-X.X),a,0);
1             1     <2>    1
(%o10)          limit  ((-) . X . a + (-) . a    + (-) . a . X)
a -> 0   a             a            a
(%i11) ```
Run Example
```load ("scifac") ;
(%o1)      /usr/share/maxima/5.21.1/share/simplification/scifac.lisp
(%o2) /usr/share/maxima/5.21.1/share/contrib/integration/abs_integrate.mac
(%o3)         /usr/share/maxima/5.21.1/share/calculus/fourie.mac
(%i4) nc_factor(e):= block([opsubst: true],  subst(lambda([[L]], apply(nc_factor_aux, L)), "+", e));
(%o4) nc_factor(e) := block([opsubst : true],
subst(lambda([[L]], apply(nc_factor_aux, L)), "+", e))
(%i5) dotassoc  : false;
(%o5)                                false
(%i6) dotdistrib: false;
(%o6)                                false
(%i7) dot2tic_tac(e):= block([inflag: true],  if safe_op(e)#"." then error("op(e) shoule be '.'"),  if length(e)#2 then error("the number of arguments should be 2"),  funmake('tic, [first(e)])*funmake('tac, [second(e)]));
(%o7) dot2tic_tac(e) := block([inflag : true],
if safe_op(e) # "." then error("op(e) shoule be '.'"),
if length(e) # 2 then error("the number of arguments should be 2"),
funmake('tic, [first(e)]) funmake('tac, [second(e)]))
(%i8) tic_tacify(e):= block([op: safe_op(e), inflag: true, seen_dot: false, prederror: true],  if op="." then dot2tic_tac(e)  else if op="*" then map(lambda([el],      if not seen_dot and op="." then (seen_dot: true, dot2tic_tac(el)) else el), e)  else e);
(%o8) tic_tacify(e) := block([op : safe_op(e), inflag : true,
seen_dot : false, prederror : true], if op = "." then dot2tic_tac(e)
else (if op = "*" then map(lambda([el],
if (not seen_dot) and (op = ".") then (seen_dot : true, dot2tic_tac(el))
else el), e) else e))
(%i9) ntic_or_ntac(e):= is(not funp('tic, e) or not funp('tac, e));
(%o9)  ntic_or_ntac(e) := is((not funp('tic, e)) or (not funp('tac, e)))
(%i10) de_tic_tacify_aux(e):= block([fst: 1, scn: 1, rst: 1, inflag: true, prederror: true],  for el in e do (if funp('tic, el) then fst: remfun('tic, el)    else if funp('tac, el) then scn: remfun('tac, el)    else rst: rst*el),  rst*(fst . scn));
(%o10) de_tic_tacify_aux(e) := block([fst : 1, scn : 1, rst : 1,
inflag : true, prederror : true], for el in e do if funp('tic, el)
then fst : remfun('tic, el) else (if funp('tac, el)
then scn : remfun('tac, el) else rst : rst el), rst (fst . scn))
(%i11) de_tic_tacify(e):= block([inflag: true, prederror: true, op: safe_op(e)],  if op="*" and every(ntic_or_ntac, args(e)) then de_tic_tacify_aux(e)  else if op#false then map('de_tic_tacify, e)  else e);
(%o11) de_tic_tacify(e) := block([inflag : true, prederror : true,
op : safe_op(e)], if (op = "*") and every(ntic_or_ntac, args(e))
then de_tic_tacify_aux(e) else (if op # false then map('de_tic_tacify, e)
else e))
(%i12) nc_factor_aux([L]):= block([M, op],  M: map('tic_tacify, L),  M: factorsum(factor(apply("+", M))),  de_tic_tacify(M));
(%o12) nc_factor_aux([L]) := block([M, op], M : map('tic_tacify, L),
M : factorsum(factor(apply("+", M))), de_tic_tacify(M))
(%i14) ```
Run Example
```dotassoc:true;
(%o1)                                true
(%i2) dotdistrib:true;
(%o2)                                true
(%i3) dot1simp:true;
(%o3)                                true
(%i4) dotconstrules:true;
(%o4)                                true
(%i5) dotexptsimp:true;
(%o5)                                true
(%i6) I(X):=(X^^-1);
<- 1>
(%o6)                           I(X) := X
(%i7) T(X):=X.I(T12).T14c.I(T14e).T12.I(X).T14e;
(%o7)  T(X) := X . (I(T12) . (T14c . (I(T14e) . (T12 . (I(X) . T14e)))))
(%i8) limit((1/a)*(T(T12+a*S)-T(T12)),a,0);
<- 1>              <- 1>                    <- 1>
(%o8) limit  ((a S) . T12      . T14c . T14e      . T12 . (T12 + a S)
a -> 0
<- 1>                    <- 1>
. T14e + T14c . T14e      . T12 . (T12 + a S)      . T14e - T14c)/a
(%i9) limit((1/a)*((X+a).(X+a)-X.X),a,0);
<2>
X . a + a . X + a
(%o9)                     limit  --------------------
a -> 0          a
(%i10) ```

### Related Help

Help for Dotassoc