>>134519> Некоторое X
Туда ещё нужно явно добавить <a,a>, <b,b> и прочее. Ещё нужно добавить пары для симметричности. То есть
{<a,b>, <b,c>, <c,a>, <d,e>, <e,f>, <f,d>,
<a,a>, <b,b>, ...
<b,a>, <c,b>, <a,c>, ...
}
Но ок, всё засчитано.
> "репрезентативными" элементами
Они называются "представителями класса", или просто представителями.
> симметричность и рефлексивность как бы подразумеваются
Это значит, что у тебя есть математическое мышление, и ты способен видеть теоремы. Весьма хорошо. Не надо характеризовать свои вопросы как "глупости".
В принципе, ты прав, рефлексивность можно было бы вывести из симметричности и транзитивности - но только если бы мы знали, что каждый элемент находится в паре с каким-то другим элементом, а это требование как раз эквивалентно требованию рефлексивности. То есть вот рассмотрим множество {a,b,c,d,e,f, w}. На нём можно задать отношение, построенное тобой, но оно не будет отношением эквивалентности, потому что никак не получится доказать, что w~w. Поэтому пару <w,w> придётся добавлять в отношение явно.
> Фактор-множество X будет множество {a, d}
Не совсем. Фактор-множеством будет { {a, b, c}, {d, e, f} }.
Ты записал это фактор-множество через представители.
> наверно пока ещё рано плотно за него браться
Нет, уже не рано, ты готов читать учебники. Просто я нахожу язык книги Зорича неудачным и нудным, на борьбу с этим языком при самостоятельном чтении приходится тратить неоправданно много сил, хотя более удачного учебника анализа на русском языке я не знаю (удачного, главным образом, из-за второго тома). Сначала давай разберём функции и мощность множеств (этот и следующий листочки), а потом поговорим об учебниках. "Урожаи и посевы" Гротендика читал? Если нет, то можешь пока что прочитать, это интересно.
> "работы"
Ты действительно работаешь, без всяких кавычек.
Так вот, функция. Это понятие оформилось не очень давно. Древние греки его не знали, например. Сама идея функциональной зависимости более-менее закрепилась в массовом сознании только в средневековье. Некоторые мысли на эту тему, слабые и размытые, высказывал Николай Орем в XIV веке. Окончательно в математику понятие функции ввёл только Лейбниц, опираясь на вышедшую сейчас из употребления идею постоянных и переменных количеств. С тех пор понятие функции продолжает эволюционировать.
В наши дни есть несколько не эквивалентных взглядов на функцию. Самый популярный взгляд - это, конечно, теоретико-множественный. Он оформился в первой половине XX века, опираясь на более ранние логико-философские концепции. Во второй половине XX века эти концепции были пересмотрены известными логиками, и, видимо, лет через сорок, когда наше поколение уйдёт со столпа титанов, теоретико-множественное рассмотрение функции в очередной раз изменится.
Чуть менее популярный взгляд - это рассмотрение функции в теоретико-категориальном ключе. Теория категорий даёт возможность рассмотреть функцию гораздо более абстрактно, чем теория множеств. Если в теории множеств функция вполне определяется своими значениями, то в теории категорий это, вообще говоря, не так.
Я изложу сейчас теоретико-множественное видение функции. С идеей функции ты, несомненно, знаком. В школе ты уже видел некоторые функции. Функцией в школе называется
формула, путём которой одному числу сопоставляется другое. Этот школьный взгляд нельзя признать удовлетворительным, поскольку формула - это лишь строка символов, а ведь чувствуется, что функция есть нечто большее, чем просто буковки. Одна и та же функция может быть выражена несколькими формулами, например. В программировании ты, конечно, тоже встречался с функциями, но функции из программирования, в отличие от школьных, работают не только с числами. В программировании функция - это просто блок кода, на который наложены некоторые дополнительные ограничения - наличие имени, наличие возвращаемого значения, etc.
Можно усмотреть нечто общее между школьными и программистскими функциями, а именно идею сопоставления. Функцией называется то, что одному объекту (в общем случае n-ке объектов)
сопоставляет другой объект. Это, вроде бы, настолько простая идея, что в разъяснениях не нуждается. Однако вот такие понятия, которые вроде бы очевидны, доставляют ментальный дискомфорт. В силу их очевидности о них толком ничего сказать нельзя, они просто есть. А это возмутительно. У всего должны быть какие-то свойства, обо всём должны быть какие-то факты. Каждый совсем не очевидный объект вроде "интер-универсальной теории Тейхмюллера: построение театров Ходжа" (с) бросает нашему сознанию вызов, но едва ли не больший вызов нам бросает каждый самоочевидный объект. Как он смеет быть самоочевидным?
Ладно, я отвлёкся. Итак, с помощью уже известных понятий множества и отношения надобно разъяснить, что значит, что "одному объекту сопоставляется другой". Что подразумевается под сопоставлением? Зафиксируем то, что нам уже известно.
Во-первых, объекты, которым функция будет сопоставлять другие объекты, в некотором смысле имеют одну природу. Это или любое из чисел, или любое из String и т.п.
Во-вторых, *каждому объекту сопоставляется один-единственный объект. Школьные функции доставляют одно число, программерские функции доставляют одно значение.
Вот на этих двух фактах и разовьём теорию. Первый факт означает, что объекты, которым функция будет что-то сопоставлять, образуют множество. Назовём его domain, обозначим буквой X. Тут же скажем, что объекты, которые имеют быть сопоставленными функцией, также образуют множество. Назовём его codomain, обозначим буквой Y.
Далее. Утверждение, что объекту x сопоставлен некоторый объект y, можно воспринимать как утверждение, что дана упорядоченная пара <x,y>. Раз есть упорядоченные пары, то есть и какое-то отношение. Второй факт естественно выразить путём наложения на возникшее вот отношение каких-то ограничений, то есть нам нужно ввести какой-то новый сорт отношений.
Назовём
функциональным отношением вида <X,Y> отношение φ со следующими свойствами.
1. Для всякого элемента x ∈ X существует элемент y ∈ Y такой, что пара <x,y> принадлежит отношению φ.
2. Если x φ a и x φ b, то a = b.
Первое свойство означает, что любому объекту из X сопоставлен объект из Y. Второе свойство означает единственность сопоставленного объекта. Запись y=φ(x) означает, что пара <x,y> находится в отношении φ.
Функцией называется тройка [domain, codomain, функциональное отношение вида <domain, codomain>]. По ряду причин нельзя отождествить понятие функции и функционального отношения, обязательно нужна явная информация о domain и codomain.
Ну вот мы и истолковали понятие функции в понятиях множеств и отношений.
Итак, всегда, когда нам задана функция f, мы имеем право считать, что нам известны её domain, codomain, а также некоторое функциональное отношение. Мы можем записать это как f: X → Y, где X domain, Y codomain. Читается как "функция f отображает множество X на множество Y". Символ, кстати, довольно молодой, ему меньше века, раньше функции обозначали менее удачным символом. Когда додумались обозначать функции стрелочкой, случилась мини-революция.
Обычная школьная функция квадратный корень - это функция из вещественных чисел в вещественные числа. Символически √: ℝ → ℝ.
Функция void function1(integer, string, real) символически запишется как function1: integer × string × real → void.
Так называемые функции многих переменных - это просто функции, в которых domain есть декартово произведение.
Сложение - это функция двух аргументов, например. +: ℝ×ℝ → ℝ.
Слово функция в XX веке постепенно вытеснялось словом "отображение", но не вытеснилось до конца благодаря теории категорий, из-за которой функции сейчас часто называют морфизмами. Терминология здесь вообще довольно развитая. Функциями стараются называть отображения числовых множеств, операторами называют отображения нечисловых множеств. Функции, в которых domain и codomain совпадают, обычно называются преобразованиями. Например, string→string назовётся преобразованием множества string. Хотя это всё размыто, и кому как приятнее, тот так и говорит. Однако преподаватели этой страны иногда очень маразматично относятся к терминологии. Требуют обязательно различать функции и отображения, лол. Domain требуют называть "областью отправления", codomain "областью прибытия", дважды лол. Вся эта байда с терминологией случилась из-за приключившегося в СССР разоблачения "низкопоклонства перед Западом", а в этом году внезапно вспыхнула по-новой.
Немного обогатим нашу терминологию.
Квадратный корень, известный из школы, не может принимать отрицательных значений. Поэтому не любое число из ℝ может быть возвращено квадратным корнем. Мы введём термин, который такую ситуацию исключает. Сюръекция, или сюръективное отображение - это отображение f: X → Y такое, что для любого y ∈ Y существует такой x ∈ X, что f(x) = y. То есть сюръекция - это когда в каждый игрек отображается по крайней мере один икс.
В один и тот же y могут отображаться несколько разных элементов из X. Например, функция int func(string s){return 0;} и строке "foo", и строке "bar" сопоставит один и тот же ноль. Введём термин, запрещающий такую ситуацию. Инъекция, или инъективное отображение - это такое отображение f: X → Y, что если x1≠x2, то f(x1)≠f(x2). Разным иксам соответствуют разные игреки.
Наконец, биекцией, или взаимно-однозначным отображением, назовём отображение, которое и сюръективно, и инъективно. С помощью понятия биекции мы, следуя Кантору, скоро построим понятие мощности множеств.
Если y=f(x), то мы будем называть y образом x при отображении f, x - прообразом y. Все иксы, которые отображаются в y, мы назовём полным прообразом этого y. Прочувствуй разницу. Прообраз y - это какой-то элемент X, полный прообраз y - это какое-то подмножество X. Полный прообраз может быть пустым множеством, если в y не отображается ни один элемент. Например, полный прообраз -13 при описанном выше отображении √ пуст.
Вот листочек. Рисовать не обязательно. Как обычно, лучше поскорее, чем побольше.
> Альзо, с наступающим жэ и всего самого лучшего.
Спасибо, и тебя.