Эта статья — о скобках для логических утверждений. О скобках для округления нецелых чисел в ту или иную сторону см.
Символы Айверсона .
Скобка Айверсона — функция, возвращающая 1 для истинного высказывания , и 0, если аргумент ложный:
[ P ] = { 1 , если P истинно 0 , если P ложно {\displaystyle [\,P\,]={\begin{cases}1,&{\text{если }}P{\text{ истинно}}\\0,&{\text{если }}P{\text{ ложно}}\end{cases}}} Нотация введена Кеннетом Айверсоном для языка программирования APL , и оказалась очень удобным математическим обозначением, например, с ним можно лаконично определить:
символ Кронекера : δ i j = [ i = j ] {\displaystyle \delta _{ij}=[\,i=j\,]} , индикаторную функцию : 1 A ( x ) = [ x ∈ A ] {\displaystyle \mathbf {1} _{A}(x)=[\,x\in A\,]} , функцию Хевисайда : θ ( x ) = [ x ⩾ 0 ] {\displaystyle \theta (x)=[\,x\geqslant 0\,]} , функцию знака числа : sgn ( x ) = [ x > 0 ] − [ x < 0 ] {\displaystyle \operatorname {sgn}(x)=[\,x>0\,]-[\,x<0\,]} . Также нотация удобна при обращении с суммами , поскольку позволяет выражать их без ограничений на индекс суммирования, например:
∑ i = 1 n a i = ∑ k a k [ 1 ⩽ k ⩽ n ] {\displaystyle \sum _{i=1}^{n}a_{i}=\sum _{k}a_{k}[\,1\leqslant k\leqslant n\,]} , то есть индекс k {\displaystyle k} пробегает всё множество Z {\displaystyle \mathbb {Z} } целых чисел , и формально суммируется бесконечное число слагаемых , но лишь конечное число их отлично от нуля.
Пример вычисления с использованием нотации Айверсона суммы S = ∑ i = 1 n − 1 ∑ j = i + 1 n a i a j {\displaystyle S=\sum _{i=1}^{n-1}\sum _{j=i+1}^{n}a_{i}a_{j}} для последовательности { a i } {\displaystyle \{a_{i}\}} :
[ i < j ] + [ i = j ] + [ i > j ] = 1 {\displaystyle [\,i<j\,]+[\,i=j\,]+[\,i>j\,]=1} , ∑ i , j a i a j [ i < j ] + ∑ i , j a i a j [ i = j ] + ∑ i , j a i a j [ i > j ] = ∑ i , j a i a j {\displaystyle \sum \limits _{i,j}a_{i}a_{j}[\,i<j\,]+\sum \limits _{i,j}a_{i}a_{j}[\,i=j\,]+\sum \limits _{i,j}a_{i}a_{j}[\,i>j\,]=\sum \limits _{i,j}a_{i}a_{j}} , S + ∑ i a i 2 + S = ( ∑ i a i ) 2 {\displaystyle S+\sum \limits _{i}a_{i}^{2}+S={\biggl (}\sum \limits _{i}a_{i}{\biggr )}^{2}} , а так как для правой части:
∑ i , j a i a j = ∑ i ∑ j a i a j = ∑ i a i ∑ j a j = ( ∑ i a i ) 2 {\displaystyle \sum \limits _{i,j}a_{i}a_{j}=\sum \limits _{i}\sum \limits _{j}a_{i}a_{j}=\sum \limits _{i}a_{i}\sum \limits _{j}a_{j}={\biggl (}\sum \limits _{i}a_{i}{\biggr )}^{2}} , то:
S = ∑ 1 ≤ i < j ≤ n a i a j = 1 2 ( ∑ i = 1 n a i ) 2 − 1 2 ∑ i = 1 n a i 2 {\displaystyle S=\sum _{1\leq i<j\leq n}a_{i}a_{j}={\frac {1}{2}}{\biggl (}\sum _{i=1}^{n}a_{i}{\biggr )}^{2}-{\frac {1}{2}}\sum _{i=1}^{n}a_{i}^{2}} . Грэхем Р., Кнут Д., Паташник О. Конкретная математика. — М. : Мир, 1998. — 703 с. — ISBN 5-03-001793-3 . Kenneth E. Iverson. A Programming Language. — the University of California: Wiley, 1962. — 286 с. — ISBN 0471430145 .