Булева функция называется монотонной, если для любых двух сравнимых наборов a, b выполняется условие:
.
Двоичный набор не меньше двоичного набора , если для каждой пары справедливо соотношение:. Для функции двух аргументов следующие наборы сравнимы: 11>10, 11>01, 10>00 и т.д. Наборы 01 и 10 несравнимы. Т.о., условие монотонности для функции двух аргументов мы можем записать в виде:
. Функция не является монотонной, т.к., например,. Для функции трех переменных наборы 110 и 001, 101 и 010 являются несравнимыми.
Булева функция называется самодвойственной, если на каждой паре противоположенных наборов, она принимает противоположенные значения, т.е. если выполняется условие:
. Или, что то же самое: . Функция не является самодвойственной, т.к. .
Функции пользователя задаются в Maple с помощью функционального оператора. При этом используется следующая конструкция:
name:=(x,y,...)->expr ,
где name – имя функции; := - знак присваивания; в круглых скобках (x,y,...)указываются формальные параметры (аргументы) функции; -> - знаки «минус» и «больше» без пробела набирается с клавиатуры; expr – тело функции (аналитическое или логическое выражение для функции). Для того, чтобы вычислить значение функции, вместо формальных параметров подставляются фактические параметры (конкретные значения аргументов).
Булевы функции задаются в Maple с помощью следующих логических операторов:
not- отрицание ; notx;
or – дизъюнкция, логическое или , , x or y
and –конъюнкция, логическое и,,&, x and y.
xor – сложение по модулю 2,, x xor y.
Т.к. булевы функции – это логические функции, то и аргументы их принимают значения илиtrueилиfalse
Зададим функцию эквивалентности в 3-х формах в Maple:
СДНФ:
> f1:=(x1,x2)->not x1 and not x2 or x1 and x2;
> f1(false,false);
f1(false,true);
f1(true,false);
f1(true,true);
Так как приоритет конъюнкции выше, чем дизъюнкции, скобки не ставятся. Чтобы наборы рассматривались как единое целое, после каждого набора набираем Shift+Enter, после последнего набора – Enter. Наборы аргументов у булевых функций располагаются в порядке возрастания двоичной записи номера набора.
СКНФ:
> f2:=(x1,x2)->(x1 or not x2)and(not x1 or x2);
Т.к. нам сначала надо выполнить дизъюнкцию, то берем операциюв скобки.
Полином Жегалкина:
> f3:=(x1,x2)->true xor x1 xor x2;
Можно вывести и таблицу истинности для функции. Рассмотрим пример для функции(штрих Шеффера).