### Related

##### defrule-disprule-matchdeclare-true

matchdeclare(n, integ...

defrule(fnx, f(nx), n...

disprule(all);

Calculate

##### defrule-denom-expandwrt_denom-factor-false-matchdeclare-maxapplydepth-ratexpand-simp-tellsimp-tellsimpafter-true

1/(a*b), simp:true;

1/(a*b), simp:false;

matchdeclare(a, true);

Calculate

##### defrule-factor-false-matchdeclare-maxapplydepth-simp-tellsimp-tellsimpafter-true

1/(a*b), simp:true;

1/(a*b), simp:false;

matchdeclare(a, true);

Calculate

matchdeclare(n, integ...

defrule(fnx, f(nx), n...

disprule(all);

Calculate

matchdeclare(n, integ...

defrule(fnx, f(nx), n...

disprule(all);

Calculate

##### defrule-factor-false-matchdeclare-maxapplydepth-simp-tellsimp-tellsimpafter-true

1/(a*b), simp:true;

1/(a*b), simp:false;

matchdeclare(a, true);

Calculate

matchdeclare(n, integ...

defrule(fnx, f(nx), n...

disprule(all);

Calculate

##### defrule-disprule-matchdeclare-true

matchdeclare(n, integ...

defrule(fnx, f(n*x), ...

disprule(all);

Calculate

##### defrule-false-simp-true

1/(a*b), simp:true;

1/(a*b), simp:false;

(tellsimp, 1/(a*b), (...

Calculate

##### defrule-false-simp-true

1/(a*b), simp:true;

1/(a*b), simp:false;

(tellsimp, 1/(a*b), s...

Calculate

### defrule

Run Example
```(%i1)remvalue(n,z);
(%o1)                           [false, false]
(%i2) matchdeclare(a,lambda([x],freeof(x,n)));
(%o2)                                done
(%i3) matchdeclare(b,lambda([x],freeof(x,n) and integerp(x) and x>
0));
(%o3)                                done
(%i4) matchdeclare(f,all);
(%o4)                                done
(%i5) matchdeclare(g,lambda([x],freeof(n-1,x)));
(%o5)                                done
(%i6) defrule(r1,zt(1,n,z),z/(z-1));
z
(%o6)                      r1 : zt(1, n, z) -> -----
z - 1
(%i7) defrule(r2,zt(n,n,z),z/(z-1)^2);
z
(%o7)                    r2 : zt(n, n, z) -> --------
2
(z - 1)
(%i8) defrule(r3,zt(1/n,n,z),log(z/(z-1)));
1                 z
(%o8)                   r3 : zt(-, n, z) -> log(-----)
n               z - 1
(%i9) defrule(r4,zt(a^n,n,z),z/(z-a));
n             z
(%o9)                     r4 : zt(a , n, z) -> -----
z - a
(%i10) defrule(r5,zt(a^(n-1),n,z),1/(z-a));
n - 1             1
(%o10)                  r5 : zt(a     , n, z) -> -----
z - a
(%i11) defrule(r6,zt(binomial(n,b),n,z),z/(z-1)^(b+1));
- b - 1
(%o11)         r6 : zt(binomial(n, b), n, z) -> (z - 1)        z
(%i12) defrule(r7,zt(n^b,n,z),block([tmp:z/(z-1)],  for i:1 thru b do tmp:-z*diff(tmp,z),  factor(tmp)));
b                          z
(%o12) r7 : zt(n , n, z) -> block([tmp : -----],
z - 1
for i thru b do tmp : - diff(tmp, z) z, factor(tmp))
(%i13) defrule(r8,zt(sin(a*n),n,z),z*'sin(a)/((z^2-2*z*'cos(a)+1)));
sin(a) z
(%o13)          r8 : zt(sin(a n), n, z) -> -------------------
2
z  - 2 cos(a) z + 1
(%i14) defrule(r9,zt(cos(a*n),n,z),z*(z-'cos(a))/(z^2-2*z*'cos(a)+1));
z (z - cos(a))
(%o14)          r9 : zt(cos(a n), n, z) -> -------------------
2
z  - 2 cos(a) z + 1
(%i15) defrule(r10,zt(kron_delta(b,n),n,z),1/z^b);
1
(%o15)              r10 : zt(kron_delta(b, n), n, z) -> --
b
z
(%i16) defrule(r11,zt(a^n*f,n,z),'subst(z/a,z,ztrans(f,n,z)));
n                        z
(%o16)     r11 : zt(a  f, n, z) -> substitute(-, z, ztrans(f, n, z))
a
(%i17) defrule(r12,zt(n^b*g,n,z),block([tmp:ztrans(g,n,z)],  for i:1 thru b do tmp:-z*'diff(tmp,z),  return(tmp)));
b
(%o17) r12 : zt(g n , n, z) -> block([tmp : ztrans(g, n, z)],
dtmp
for i thru b do tmp : - ---- z, return(tmp))
dz
(%i18) defrule(r13,zt(exp(-a*n),n,z),z/(z-exp(-a)));
- a n               z
(%o18)               r13 : zt(%e     , n, z) -> ---------
- a
z - %e
(%i19) defrule(r14,zt(f(n-m),n,z),z^(-m)*ztrans(f(n),n,z));
ztrans(f(n), n, z)
(%o19)          r14 : zt(f(n - m), n, z) -> ------------------
m
z
(%i20) declare(zt,linear);
(%o20)                               done
(%i21) ztrans1(e):=apply1(e,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14);
(%o21) ztrans1(e) := apply1(e, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11,
r12, r13, r14)
(%i22) ztrans(f,n,z):=ev(ztrans1(zt(f,n,z)),diff,subst);
(%o22)     ztrans(f, n, z) := ev(ztrans1(zt(f, n, z)), diff, subst)
(%i23) defrule(ir1,izt(z/(z-a),z,n),a^n);
z              n
(%o23)                   ir1 : izt(-----, z, n) -> a
z - a
(%i24) defrule(ir2,izt(1/(z-a),z,n),a^(n-1));
1              n - 1
(%o24)                 ir2 : izt(-----, z, n) -> a
z - a
(%i25) declare(izt,linear);
(%o25)                               done
(%i26) invztrans1(e):=apply1(e,ir1,ir2);
(%o26)               invztrans1(e) := apply1(e, ir1, ir2)
(%i27) invztrans(f,z,n):=invztrans1(izt(f,z,n));
(%o27)          invztrans(f, z, n) := invztrans1(izt(f, z, n))
(%i28) ztrans(1,n,z);
z
(%o28)                               -----
z - 1
(%i29) ztrans(a,n,z);
a z
(%o29)                               -----
z - 1
(%i30) expand(ztrans((-1)^n,n,z));
z
(%o30)                               -----
z + 1
(%i31) ztrans(n,n,z);
z
(%o31)                             --------
2
(z - 1)
(%i32) ztrans(n^2,n,z);
z (z + 1)
(%o32)                             ---------
3
(z - 1)
(%i33) ztrans(a^(n-1),n,z);
1
(%o33)                               -----
z - a
(%i34) factor(ztrans(a^(n-1)+n^2,n,z));
3      2      2
2 z  - a z  - 2 z  - a z + 3 z - 1
(%o34)                ----------------------------------
3
(z - 1)  (z - a)
(%i35) ```
Run Example
```matchdeclare(n, integerp, x, true);
(%o1)                                done
(%i2) defrule(fnx, f(nx), nf(x));
(%o2)                        fnx : f(nx) -> nf(x)
(%i3) disprule(all);
(%t3)                        fnx : f(nx) -> nf(x)

(%o3)                                [%t3]
(%i4) ```
Run Example
```1/(a*b), simp:true;
1
(%o1)                                 ---
a b
(%i2) 1/(a*b), simp:false;
1
(%o2)                                 ---
a b
(%i3) matchdeclare(a, atom);
(%o3)                                done
(%i4) matchdeclare(b, atom);
(%o4)                                done
(%i5) tellsimp(1/(a*b), simp:false, ((1/a)*(1/b)));
tellsimp: warning: putting rules on '+' or '*' is inefficient, and may not work.
(%o5)                         [*rule1, simptimes]
(%i6) tellsimpafter(1/(a*b), simp:false, ((1/a)*(1/b)));
(%o6)                     [*rule2, *rule1, simptimes]
(%i7) defrule(fraction, 1/(a*b),((1/a)*(1/b))), simp:false;
1
(%o7)                       fraction : --- -> false
a b
(%i8) 1/(a*b), simp:false;
1
(%o8)                                 ---
a b
(%i9) maxapplydepth:1;
(%o9)                                  1
(%i10) newfac;
(%o10)                              newfac
(%i11) fraction(1/(a*b));
1   1
(%o11)                              - (---)
1  a b
(%i12) factor(1/(a*b)), simp:false;
1
(%o12)                                ---
a b
(%i13) ratexpand:false;
(%o13)                               false
(%i14) expandwrt_denom:true;
(%o14)                               true
(%i15) 1/(a*b), fraction;
1
(%o15)                                ---
a b
(%i16) ```

Help for Defrule