       pattern matching against the Dt function?

• To: mathgroup at smc.vnet.net
• Subject: [mg85238] pattern matching against the Dt function?
• From: "Adam M." <adamm at san.rr.com>
• Date: Mon, 4 Feb 2008 03:06:40 -0500 (EST)

```Hello,

I'm having trouble matching the Dt function with a pattern, even though
it works for all other functions I've tried.

(*It doesn't match Dt[b] here.*)
In:= {f[a], Dt[b]} /. Dt[n_]->n
Out= {f[a], Dt[b]}

(*But it matches f[a] with no problem.*)
In:= {f[a], Dt[b]} /. f[n_]->n
Out= {a, Dt[b]}

(*In a process of elimination, I tried another built-in function, D, and
it worked fine.*)
In:= {f[a], D[b]} /. D[n_]->n
Out= {f[a], b}

(*I tried another function more than one character long, Sin, and that
works.*)
In:= {f[a], Sin[b]} /. Sin[n_]->n
Out= {f[a], b}

(*The full forms all seem to follow the same pattern.*)
In:= Sin[b] // FullForm
Out//FullForm= Sin[b]

In:= Dt[b] // FullForm
Out//FullForm= Dt[b]

In:= f[b] // FullForm
Out//FullForm= f[b]

(*I thought it might be related to the evaluation of the Dt function, so
I tried Holding it. No luck.*)
In:= {f[a], Hold[Dt[b]]} /. Dt[n_]->n
Out= {f[a], Hold[Dt[b]]}

(*However, it has no problem matching f[a] in a Hold.*)
In:= {Hold[f[a]], Dt[b]} /. f[n_]->n
Out= {Hold[a], Dt[b]}

(*I tried looking at the attributes to find out if there was something
special about the Dt function, but it doesn't seem like it...*)
In:= Attributes[Sin]
Out= {Listable, NumericFunction, Protected}

In:= Attributes[D]

In:= Attributes[Dt]
Out= {Protected}

I've read every section on pattern matching in the documentation center,
and I'm at a complete loss to explain why I can't seem to match the Dt
function with the Dt[n_] pattern when I can match these other functions.
I know I can use the _Dt pattern to match it, but then I don't get
control over matching the arguments...

Thank you.

Very curious,