360 years later or „Скрещенья ног“
In 1896 Paul Gauguin completed Te Arii Vahine (The King’s Wife):


By sheer luck, the first painting is just few kilometers away from me in Pushkin's museum.
In 1896 Paul Gauguin completed Te Arii Vahine (The King’s Wife):
By sheer luck, the first painting is just few kilometers away from me in Pushkin's museum.
Posted by
nikita
at
2/13/2021 10:55:00 PM
0
comments
a*b + c*d
" is converted to "a b * c d * +
". An expression in reverse Polish notation can be seen as a program for a stack automaton:
PUSH A
PUSH B
MUL
PUSH C
PUSH D
MUL
ADD
Where PUSH
pushes its argument on the top of the (implicit) stack, while ADD
and MUL
pop 2 top elements from the stack, perform the respective operation and push the result back.
For reasons that will be clearer anon, let's re-write this program as
Container c;
c.put(A);
c.put(B);
c.put(c.get() * c.get())
c.put(C);
c.put(D);
c.put(c.get() * c.get())
c.put(c.get() + c.get())
Where Container
is the type of stacks, c.put()
pushes the element on the top of the stack and c.get()
pops and returns the top of the stack. LIFO discipline of stacks is so widely used (implemented natively on all modern processors, built in programming languages in the form of call-stack) that one never ask whether a different method of evaluating expressions is possible.
Here is a problem: find a way to translate infix notation to a program for a queue automaton, that is, in a program like the one above, but where Container
is the type of FIFO queues with c.put()
enqueuing an element at the rear of the queue and c.get()
dequeuing at the front. This problem was reportedly solved by Jan L.A. van de Snepscheut sometime during spring 1984.
While you are thinking about it, consider the following tree-traversal code (in some abstract imaginary language):
walk(Treenode root) {
Container todo;
todo.put(root);
while (!todo.is_empty()) {
next = todo.get();
visit(next);
for (child in next.children) {
todo.put(child);
}
}
}
Where node.children
is the list of node children suitable for iteration by for
loop.
Convince yourself that if Container
is the type of stacks, tree-walk is depth-first. And if Container
is the type of queues, tree-walk is breadth-first. Then, convince yourself that a depth-first walk of the parse tree of an infix expression produces the expression in Polish notation (unreversed) and its breadth-first walk produces the expression in "queue notation" (that is, the desired program for a queue automaton). Isn't it marvelous that traversing a parse tree with a stack container gives you the program for stack-based execution and traversing the same tree with a queue container gives you the program for queue-based execution?
I feel that there is something deep behind this. A. Stepanov had an intuition (which cost him dearly) that algorithms are defined on algebraic structures. Elegant interconnection between queues and stacks on one hand and tree-walks and automaton programs on the other, tells us that the correspondence between algorithms and structures goes in both directions.
Posted by
nikita
at
11/11/2020 08:27:00 AM
0
comments
Labels: programming
Since Cantor's "I see it, but I cannot believe it" (1877), we know that \(\mathbb{R}^n\) are isomorphic sets for all \(n > 0\). This being as shocking as it is, over time we learn to live with it, because the bijections between continua of different dimensions are extremely discontinuous and we assume that if we limit ourselves to any reasonably well-behaving class of maps the isomorphisms will disappear. Will they?
Theorem. Additive groups \(\mathbb{R}^n\) are isomorphic for all \(n > 0\) (and, therefore, isomorphic to the additive group of the complex numbers).
Proof. Each \(\mathbb{R}^n\) is a vector space over rationals. Assuming axiom of choice, any vector space has a basis. By simple cardinality considerations, the cardinality of a basis of \(\mathbb{R}^n\) over \(\mathbb{Q}\) is the same as cardinality of \(\mathbb{R}^n\). Therefore all \(\mathbb{R}^n\) have the same dimension over \(\mathbb{Q}\), and, therefore, are isomorphic as vector spaces and as additive groups. End of proof.
This means that for any \(n, m > 0\) there are bijections \(f : \mathbb{R}^n \to \mathbb{R}^m\) such that \(f(a + b) = f(a) + f(b)\) and, necessary, \(f(p\cdot a + q\cdot b) = p\cdot f(a) + q\cdot f(b)\) for all rational \(p\) and \(q\).
I feel that this should be highly counter-intuitive for anybody who internalised the Cantor result, or, maybe, especially to such people. The reason is that intuitively there are many more continuous maps than algebraic homomorphisms between the "same" pair of objects. Indeed, the formula defining continuity has the form \(\forall x\forall\epsilon\exists\delta\forall y P(x, \epsilon, \delta, y)\) (a local property), while homomorphisms are defined by \(\forall x\forall y Q(x, y)\) (a stronger global property). Because of this, topological categories have much denser lattices of sub- and quotient-objects than algebraic ones. From this one would expect that as there are no isomorphisms (continuous bijections) between continua of different dimensions, there definitely should be no homomorphisms between them. Yet there they are.
Posted by
nikita
at
10/14/2020 10:27:00 PM
0
comments
package maintype foo interface { f() int } type bar struct { v int } func out(s foo) int { return s.f() - 1 } func (self bar) f() int { return self.v + 1 } func main() { for { out(bar{}) } }
func convT64(val uint64) (x unsafe.Pointer) { if val == 0 { x = unsafe.Pointer(&zeroVal[0]) } else { x = mallocgc(8, uint64Type, false) *(*uint64)(x) = val } return }
Posted by
nikita
at
1/27/2019 10:25:00 PM
0
comments
Abstract: Dual of the familiar construction of the graph of a function is considered. The symmetry between graphs and cographs can be extended to a suprising degree.
Posted by
nikita
at
3/09/2018 09:58:00 PM
0
comments
Posted by
nikita
at
12/18/2017 10:10:00 PM
0
comments
Licence my roving hands, and let them go,
Before, behind, between, above, below.
O my America! my new-found-land
-- J. Donne, 1633.
Блуждающим рукам моим дай разрешенье,Variant reading reeing instead of roving is even better.
Пусти вперед, назад, промеж, и вверх, и вниз,
О дивный новый мир, Америка моя!
Posted by
nikita
at
9/22/2017 10:05:00 PM
0
comments
Proof (by contraposition). Suppose that there is an open \(A \subseteq X\), such that \((\forall x\in A)(f(x)\neq g(x))\). Let \(B\) be a countable base of \(Y\).
Define a countable family of subsets of \(A\): \(T_{U,V} = f^{-1}(U) \cap g^{-1}(V) \cap A\), where \(U, V \in B\) (that is, \(U\) and \(V\) are open subsets of \(Y\)). For any \(x\in A\), \(f(x)\neq g(x)\), and because \(Y\) is Urysohn, there are \(U, V\in B, cl(U)\cap cl(V) = \varnothing, f(x)\in U, g(x)\in V\), that is, \(x\in T_{U,V}\) that is,
\(\bigcup\limits_{cl(U)\cap cl(V) = \varnothing} T_{U,V} = A\)
Because \(X\) and hence \(A\) are Baire spaces, one of \(T_{U,V}\) in the union above, say \(T_{U_0, V_0}\) is not nowhere dense. That is, there is an open set \(G\subseteq A\) such that for any \(x_0\in G\), and any open neighbourhood \(S, x_0\in S\), \(S \cap T_{U_0,V_0}\neq\varnothing\), that is there exists a \(x'\in S\) such that \(f(x') \in U_0\) and \(g(x')\in V_0\).
Suppose that \(\lim\limits_{t\to x_0}f(t) = \lim\limits_{t\to x_0}g(t) = y\in Y\). This means that every open neighbourhood of \(y\) intersects with \(U_0\), hence \(y\in cl(U_0)\). Similarly \(y\in cl(V_0)\), contradiction with \(cl(U_0)\cap cl(V_0) = \varnothing\).
Posted by
nikita
at
12/13/2014 09:57:00 PM
0
comments
Labels: mathematics
\(a + b\) | |
\(=\) | \(-a + a + a + b + b - b\) |
\(=\) | \(-a + a\cdot(1 + 1) + b\cdot(1 + 1) - b\) |
\(=\) | \(-a + (a + b)\cdot(1 + 1) - b\) |
\(=\) | \(-a + (a + b)\cdot 1 + (a + b)\cdot 1 - b\) |
\(=\) | \(-a + a + b + a + b - b\) |
\(=\) | \(b + a\) |
Posted by
nikita
at
10/16/2014 08:14:00 PM
0
comments
Labels: mathematics
Posted by
nikita
at
5/28/2014 06:08:00 PM
0
comments
Posted by
nikita
at
2/09/2014 12:17:00 PM
0
comments
Posted by
nikita
at
12/16/2013 12:08:00 PM
0
comments
Labels: kernel, programming
\(f(a \cdot b^{-1} \cdot c)\) | |
\(=\) | { (2) for \(a \cdot (b^{-1} \cdot c)\) } |
\(f(a) \cdot f^{-1}(e) \cdot f(b^{-1} \cdot c)\) | |
\(=\) | { (2) for \(b^{-1} \cdot c\) } |
\(f(a) \cdot f^{-1}(e) \cdot f(b^{-1}) \cdot f^{-1}(e) \cdot f(c)\) | |
\(=\) | { \(e = f(b) \cdot f^{-1}(b)\), working toward creating a sub-expression that can be collapsed by (2) } |
\(f(a) \cdot f^{-1}(e) \cdot f(b^{-1}) \cdot f^{-1}(e) \cdot f(b) \cdot f^{-1}(b) \cdot f(c)\) | |
\(=\) | { collapsing \(f(b^{-1}) \cdot f^{-1}(e) \cdot f(b)\) by (2) } |
\(f(a) \cdot f^{-1}(e) \cdot f(b^{-1} \cdot b) \cdot f^{-1}(b) \cdot f(c)\) | |
\(=\) | { \(b^{-1} \cdot b = e\) } |
\(f(a) \cdot f^{-1}(e) \cdot f(e) \cdot f^{-1}(b) \cdot f(c)\) | |
\(=\) | { \(f^{-1}(e) \cdot f(e) = e\) } |
\(f(a) \cdot f^{-1}(b) \cdot f(c)\) |
Posted by
nikita
at
1/19/2013 06:50:00 PM
0
comments
Labels: mathematics
ideal f_seq = {}; function f(arg) { f_seq := f_seq ++ arg; ... };
Posted by
nikita
at
1/17/2013 08:11:00 PM
0
comments
Labels: programming
Posted by
nikita
at
11/09/2012 06:19:00 PM
0
comments
Labels: programming
$$K_n$$ | $$=$$ | $$\frac{1}{n}\cdot\Bigg(K_{n-1} + \frac{1}{n!}\Bigg)$$ |
$$=$$ | $$\frac{1}{n}\cdot\Bigg(\frac{1}{n!} + \frac{1}{n-1}\cdot\big(K_{n-2} + \frac{1}{(n-1)!}\big)\Bigg)$$ | |
$$=$$ | $$\frac{1}{n!}\cdot\Bigg(\frac{1}{n} + \frac{1}{n-1}\Bigg) + \frac{1}{n\cdot(n - 1)}\cdot K_{n-2}$$ | |
$$=$$ | $$\frac{1}{n!}\cdot\Bigg(\frac{1}{n} + \frac{1}{n - 1} + \frac{1}{n - 2}\Bigg) + \frac{1}{n\cdot(n-1)\cdot(n - 2)}\cdot K_{n-3}$$ | |
$$=$$ | $$\cdots$$ | |
$$=$$ | $$\frac{1}{n!}\cdot\Bigg(\frac{1}{n} + \frac{1}{n - 1} + \cdots +\frac{1}{n - p + 1}\Bigg) + \frac{1}{n\cdot(n-1)\cdot\cdots\cdot(n - p +1)}\cdot K_{n-p}$$ |
Posted by
nikita
at
11/03/2012 05:38:00 PM
0
comments
Labels: mathematics
Abstract: orbits of an endomorphism of a finite set are represented as connected components of a suitably defined graph. Their structure is surprisingly simple: a collection of disjoint trees rooted on the vertices of a unique cycle.
Множество \(M\), \(M \subseteq X\), \(f\)-замкнуто, если \(x \in M\equiv f(x)\in M\), т.е. \(f\)-замкнутое множество содержит вместе с каждой точкой \(x\) ее образ \(f(x)\) и все прообразы \(f^{-1}(x)\).Очевидно, что
Пересечение \(f\)-замкнутых множеств \(M\) и \(N\) — \(f\)-замкнуто:
\(x\in M \cap N\) \(\equiv\) { определение пересечения множеств } \(x\in M \wedge x\in N\) \(\equiv\) { определение \(f\)-замкнутости} \(f(x)\in M \wedge f(x)\in N\) \(\equiv\) { определение пересечения множеств } \(f(x)\in M \cap N\)
Орбитой называется непустое минимальное \(f\)-замкнутое множество, т.е. \(f\)-замкнутое множество не имеющее собственных \(f\)-замкнутых подмножеств.
Если ребро \(a\) соединяет вершины \(x\) и \(y\), то \(\sigma(x, a) + \sigma(y, a) = 0\) (свойство (0))
Если вершина \(x\) соединяет разные ребра \(a\) и \(b\), то \(\sigma(x, a) + \sigma(x, b) \leq 0\) (свойство (1))
Если \(a_0, ... a_n\) неориентированный путь между вершинами \(x\) и \(y\), то \(\sigma(x, a_0) + \sigma(y, a_n) > -2\), т.е. крайние ребра пути не могут быть одновременно входящими.
Индукция по длине пути.
\(n = 1\). Немедленно по свойству (0).
\(n = k + 1\). Пусть \(a_0, ... a_k\) неориентированный путь между вершинами \(x\) и \(z\), а ребро \(a_{k+1}\) соединяет \(z\) и \(y\).
\(\sigma(x, a_0) + \sigma(y, a_{k+1})\) \(=\) \(\sigma(x, a_0) + \sigma(y, a_{k+1}) + \sigma(z, a_k) - \sigma(z, a_k)\) \(>\) { по гипотезе индукции \(\sigma(x, a_0) + \sigma(z, a_k) > -2\) } \(-2 + \sigma(y, a_{k+1}) - \sigma(z, a_k)\) \(=\) \(-2 + \sigma(y, a_{k+1}) - \sigma(z, a_k) + \sigma(z, a_{k+1}) - \sigma(z, a_{k+1})\) \(\geq\) { по свойству (1) \(\sigma(z, a_k) + \sigma(z, a_{k+1}) \leq 0\)} \(-2 + \sigma(y, a_{k+1}) + \sigma(z, a_{k+1})\) \(=\) { по свойству (0) \(\sigma(y, a_{k+1}) + \sigma(z, a_{k+1}) = 0\)} \(-2\)
Всякий цикл ориентирован.
Рассмотрим неориентированный цикл из ребер \(a_i\), соединяющих вершины \(x_i\) и \(x_{i+1}\), где \(0 \leq i < n\) и \(i+1\) понимается по модулю \(n\). Составим сумму $$S = \sum_{0 \leq i < n}\sigma(x_i, a_i) + \sigma(x_{i+1}, a_i)$$ По свойству (0), каждое слагаемое этой суммы равно 0. Перегруппировав слагаемые, получим $$S = \sum_{0 \leq i < n}\sigma(x_i, a_i) + \sigma(x_i, a_{i-1}) = 0$$ По свойству (1) (применимому, т.к. цикл простой), каждое слагаемое здесь не больше нуля. Так как сумма равно 0, то каждое слагаемое равно 0: $$\sigma(x_i, a_i) + \sigma(x_i, a_{i-1}) = 0$$ Т.е., в каждую вершину цикла входит и выходит одна дуга, то есть цикл ориентирован.
Циклы имеющие общую вершину совпадают.
Действительно, пусть циклы \(\{f^i(x) | 0 \leq i\}\) и \(\{f^i(y) | 0 \leq i\}\) имеют общую точку. Т.е. \(f^p(x) = f^q(y)\). Для произвольной точки первого цикла имеем
Аналогично, всякая точка второго цикла принадлежит первому.
\(f^i(x)\) \(=\) { для произвольного \(d\), так как \(f^n(x) = x\) } \(f^{i+ d\cdot n}(x)\) \(=\) { выберем \(d\) так, что \(i+ d\cdot n > p\) } \(f^{p + \Delta}(x)\) \(=\) \(f^\Delta(f^p(x))\) \(=\) { \(f^p(x) = f^q(y)\) } \(f^{q +\Delta}(y) \in \{f^i(y) | 0 \leq i\}\)
Всякий неориентированный путь \(P\) между вершинами \(x\) и \(y\), лежащими на циклах, полностью лежит в некотором цикле.
Применим индукцию по длине \(P\).
\(n = 0\). Очевидно.
\(n = k + 1\). По лемме, хотя бы одно из крайних ребер \(P\) — исходящее. Пусть это ребро, исходящее из точки \(x\). Это ребро соединяет \(x\) с вершиной \(f(x)\), также лежащей на цикле. Таким образом, путь \(f(x), \ldots, y\) длины \(k\) соединяет точки, лежащие на циклах и следовательно (по гипотезе индукции), полностью лежит в некотором цикле. Этот цикл имеет общую точку \(f(x)\) с циклом в котором лежит точка \(x\) и, следовательно, эти циклы совпадают. Таким образом, путь \(x, \ldots, y\) полностью лежит в цикле.
Всякая орбита конечного множества содержит цикл.
Действительно, орбита \(M\) не пуста по определению. Выберем в ней точку \(x\) и рассмотрим функцию \(\phi : \mathbb{N} \rightarrow M\), \(\phi(n) = f^n(x)\). Т.к. \(M\) конечно, \(\phi\) не может быть однозначным отображением и существуют натуральные числа \(p\) и \(q\), такие что \(f^p(x) = f^q(x)\). Следовательно, \(f^p(x)\) лежит на цикле длины не большей \(|p - q|\).
Posted by
nikita
at
9/28/2012 08:39:00 PM
0
comments
Labels: mathematics
Define a macro IN(x, set), called as
IN(x, (v0, v1, ..., vn))that expands into an expression
((x) == (v0) || (x) == (v1) || ... (x) == (vn))which evaluates to true iff x is a member of set {v0, ..., vn}, where the type of x and all vs is the same. Alternatively, define a macro IN1(x, ...) that expands to the same expression as IN(x, (...)).
Posted by
nikita
at
5/11/2012 08:20:00 PM
2
comments
Labels: programming
-- prime numbers: [2,3,5,7,11,13,17,19, ...] pr :: [Int] pr = [p | p <- [2 .. ], maximum [d | d <- [1 .. p - 1], p `mod` d == 0] == 1]
-- twin primes, primes whose difference is 2 twinp :: [Int] twinp = [n | n <- pr, (n + 2) `elem` (take (n + 4) pr)]
-- an (infinite) string containing a '+' for each element of s and '.' for each -- element not in s, assuming that s is ascending and s !! n > n. -- dot pr == "..++.+.+...+.+.. ..." dot :: [Int] -> [Char] dot s = [ if (x `elem` (take (x + 2) s)) then '+' else '.' | x <- [0 ..]]
-- (dot s), sliced into sub-strings of length k, separated by newlines sl :: [Int] -> Int -> [[Char]] sl s k = ['\n' : [ (dot s) !! i | i <- [j*k .. (j+1)*k - 1]] | j <- [0 ..]]
-- concatenation of slices outp :: [Int] -> Int -> [Char] outp s k = concat (sl s k)
putStr (outp pr 6) ..++.+ .+...+ .+...+ .+...+ .....+ .+.... .+...+ .+...+ .....+ .....+ .+.... .+...+
putStr (outp pr 7) ..++.+. +...+.+ ...+.+. ..+.... .+.+... ..+...+ .+...+. ....+.. ...+.+. ....+.. .+.+... ..+...+ .....+. ......+ ...+.+. ..+.+.. .+..... ....... .+...+. ....+.+ ....... ..+.+.. ...+... ..+...+
putStr (outp pr 23) ..++.+.+...+.+...+.+... +.....+.+.....+...+.+.. .+.....+.....+.+.....+. ..+.+.....+...+.....+.. .....+...+.+...+.+...+. ............+...+.....+ .+.........+.+.....+... ..+...+.....+.....+.+.. .......+.+...+.+....... ....+...........+...+.+ ...+.....+.+.........+. ....+.....+.....+.+.... .+...+.+.........+..... ........+...+.+...+.... .........+.....+....... ..+.+...+.....+.......+ .....+.....+...+.....+. ......+...+.......+.... .....+.+.........+.+... ..+...+.....+.......+.. .+.+...+...........+...
putStr (outp pr 24) ..++.+.+...+.+...+.+...+ .....+.+.....+...+.+...+ .....+.....+.+.....+...+ .+.....+...+.....+...... .+...+.+...+.+...+...... .......+...+.....+.+.... .....+.+.....+.....+...+ .....+.....+.+.........+ .+...+.+...........+.... .......+...+.+...+.....+ .+.........+.....+.....+ .....+.+.....+...+.+.... .....+.............+...+ .+...+.............+.... .+.........+.+...+.....+ .......+.....+.....+...+ .....+.......+...+...... .+.........+.+.........+ .+.....+...+.....+...... .+...+.+...+...........+ .......+...+.......+...+
putStr (outp twinp 6) ...+.+ .....+ .....+ ...... .....+ ...... .....+ ...... ...... .....+ ...... .....+ ...... ...... ...... ...... .....+ .....+ ...... ......
Posted by
nikita
at
3/03/2012 02:09:00 PM
0
comments
Labels: mathematics, programming
(global-set-key [(control ?ч ?ы)] 'save-some-buffers)expression in .emacs binds Control-ч-ы to the same command as Control-x-s is usually bound. This eliminates the need to switch layout, because ч-x (and ы-s) symbols are located on the same key (in QWERTY and JCUKEN layouts respectively).
; Map Modifier-CyrillicLetter to the underlying Modifier-LatinLetter, so that ; control sequences can be used when keyboard mapping is changed outside of ; Emacs. ; ; For this to work correctly, .emacs must be encoded in the default coding ; system. ; (mapcar* (lambda (r e) ; R and E are matching Russian and English keysyms ; iterate over modifiers (mapc (lambda (mod) (define-key input-decode-map (vector (list mod r)) (vector (list mod e)))) '(control meta super hyper)) ; finally, if Russian key maps nowhere, remap it to the English key without ; any modifiers (define-key local-function-key-map (vector r) (vector e))) "йцукенгшщзхъфывапролджэячсмитьбю" "qwertyuiop[]asdfghjkl;'zxcvbnm,.")
Posted by
nikita
at
12/24/2011 09:50:00 PM
2
comments
Labels: programming
\(x \unlhd y\) | |
\(\equiv\) | { definition of intensional subset } |
\(x\in t \Rightarrow y\in t\) | |
\(\Rightarrow\) | { substitute \(\{x\}\) for \(t\)} |
\(x\in \{x\} \Rightarrow y\in \{x\}\) | |
\(\equiv\) | { \(x\in \{x\}\) is true by the singleton property, modus ponens } |
\(y\in \{x\}\) | |
\(\equiv\) | { the singleton property, again } |
\(x = y\) |
Posted by
nikita
at
12/09/2011 01:00:00 AM
0
comments
Labels: mathematics
Note to oneself: general anaesthesia is a very efficient cure for jet lag.
Posted by
nikita
at
12/29/2010 07:42:00 PM
0
comments
An obscure generalisation: a redundancy domain should be transversal (better yet, orthogonal) to a potential failure vector. Hello, Karmarkar!
Posted by
nikita
at
2/18/2010 07:20:00 PM
0
comments
Labels: programming
that is, f is additive. Intuitively,
Posted by
nikita
at
2/04/2010 09:20:00 PM
2
comments
Labels: mathematics
Indeed,
Take an arbitrary non-zero point y. By statement 0,. By definition of continuity at x,
,
For any natural n, takeand find a rational number
, such that
. Such
always exists due to density of rationals. By choice of
we have:
and by the sandwich theorem,converges:
. Now, again, by choice of
:
, so y
satisfies the condition on x' above and
Taking the (obviously existing) limits of both sides of this inequality, one gets
The case of y being 0 is trivial.Oh. A monster function cannot be continuous even at a single point—it is discontinuous everywhere. Additive functions are divided into two separated classes: nice, everywhere continuous linear functions and unseemly, everywhere discontinuous monsters. (We still don't know whether the latter class is populated, though.) Our expectations of capturing a monster and placing a trophy in a hall must be adjusted: even if we prove that a monster exists and construct it, an idea of drawing its graph must be abandoned—it's too ugly to be depicted.
First, by using that, and restricting segment if necessary, one can assume that
, and
.
Let's prove that f is continuous at 0, then it will be linear by the statement 1. For arbitrary, let's select
, such that
(this choice is a typical magician hat trick of
proofs). For arbitrary x from the
-vicinity of 0 there is always a rational q, such that
. For such q we have:
on the other hand, we have:
establishing that f is continuous at 0.This indicates that a monster is not just a bad function, it's a very bad function, that takes arbitrarily large absolute values in arbitrarily small segments. Too bad. As a byproduct, a monster cannot be monotonic on any segment, because a function monotonic on [a, b] is bounded there:
Posted by
nikita
at
1/12/2010 03:12:00 PM
6
comments
Labels: mathematics