Объяснение было? Простите, если оно было, то оно было расчитано на людей, гораздо более умных и эрудированных, чем я, поэтому оно прошло совершенно мимо меня.
Желание не понимать начинает становиться воинственным, ну да ладно.
А именно – вводится тип, который означает “валидный индекс” и работа далее ведется именно через экземпляры этого типа, посему дополнительные проверки при обращении к вектору посредством таких экземпляров уже не нужны.
Я уже подробно написал выше, почему этот перевод так себе. Если в тот раз не помогло (хотя вы не задали ни одного уточняющего вопроса, а просто проигнорировали этот кусок), то в этот раз попробую аналогией.
То, что вы предлагаете и называете переводом — это как если бы вы объясняли джаваскриптеру концепцию проверки типов C++, говоря, что предлагается просто писать
function myFun3(iAge, sName, dHeight)
и никакие проверки не нужны, потому что эта функция вызывается с тремя аргументами, первый из которых — целое число, второй — строка, третий — число с плавающей точкой двойной точности.
При этом о том, что никто это не проверяет, кроме читающего код, вы бы стыдливо умалчивали.
Речь шла про валидность (i - N/2), а не про отношения между m и n.
Я надеялся, что если у вас есть инструмент для сравнения произвольных m и n, то вы сможете им воспользоваться для сравнения (i - N/2) с нулём (или, вернее, i с N/2, но неважно).
Мне кажется, что вы не може сказать нормальным языком простую штуку: типа у нас есть функция, которая берет i и N, и возвращает либо валидный индекс, либо признак, что индекс невалиден.
Потому что здесь ключевой вопрос — что такое «валидный индекс» (или «признак невалидности»). В частности…
Грубо говоря, на C++ это выражается чем-то вроде
…на C++ выражается не это. На C++ выражается что-то ближе к «всё честно, мамой клянус!»: компилятор не проверяет валидность индексов, корректность element_at, и так далее.
valid_index { v.size() + 1 } — существующий терм, компилятор не даст вам за такое по рукам. Функция
index_validity element_at(std::size_t i, std::size_t N) {
// нету проверки
return valid_index { i - N / 2 };
}
принимается компилятором, он от неё не расстроится и даже ворнинга не покажет. Функция
index_validity element_at(std::size_t i, std::size_t N) {
// нету проверки, но в другую сторону
return invalid_index {};
}
тоже принимается.
Для того, чтобы читающему код убедиться в корректности, ему нужно посмотреть на реализациюelement_at (и всех других функций, принимающих, возвращающих и преобразующих valid_index / index_validity). Мне на реализацию isLT смотреть не нужно, мне достаточно её типа (и проверяемой тайпчекером тотальности), чтобы убедиться, что она делает что обещает.
На идрисе и подобных языках написать isLT, которая бы подобным образом врала, просто невозможно.
Но вот людям от сохи, вроде меня, совсем нет.
Ну, есть некоторые причины, почему для непривычных систем типов нужны непривычные языки, поэтому это как раз неудивительно.
Вот функция в рантайме получает два числа и возвращает либо доказательство, что одно меньше второго, либо доказательство, что не меньше:
isLT : (m, n : Nat) -> Dec (m `LT` n)
isLT _ 0 = No absurd
isLT 0 (S _) = Yes (LTESucc LTEZero)
isLT (S m) (S n) = case isLT m n of
Yes prf => Yes (LTESucc prf)
No contra => No (\(LTESucc x) => contra x)
Дальше с этим доказательством можно безопасно индексировать массивы. Можно статически (без рантайм-проверок) из доказательства m < n получить доказательство m < n + 1. Или, если вы знаете, что m > 0, что m - 1 < n.
Или, если вдруг m строится пусть даже в рантайме, но согласно допустимому диапазону индексов (ну как iota, например, от 0 до размера вектора), то рантайм-проверки тоже не нужны.
В данном случае — прямой проверкой. У меня есть функция, упрощая, возвращающая либо результат i - N / 2, либо доказательство, что i < N / 2.
Но если я где-то раньше проверил, скажем, что 2i ≥ N, то я могу воспользоваться этим фактом, чтобы ничего не проверять здесь, экономя время в рантайме.
Ну то есть вы сами на деле эксплуатируете несовершенство российских судов
Каким образом?
Идеально выполняющий закон справедливый суд должен был бы вас экстрадировать по месту преступления и осудить в соответствии с законом, или вы так не думаете?
И место преступления (презирать коммунизм — это, кстати, какая статья?) — это здесь что? Адрес регистрации ООО (или что оно там) «Хабр»?
Да это не шутка, понятие революционной целесообразности широко известно.
Я не понимаю, как можно с серьёзной миной почти напрямую писать «для коммунизма важна не честность суда, а революционная целесообразность, и поэтому честность суда не важна вообще нигде», а потом удивляться, что из любого цивилизованного общества коммунистов гонят уринированным текстилём.
И при будущем коммунизме никаких судов, как отдельного общественного института, не предусмотрено.
При коммунизме вообще ничего не предусмотрено, кроме вайбов и эмоций, которыми коммунист в среднем руководствуется. Дальше оно там как-нибудь само, чего там думать, отнять всё и поделить, виновных наказать, невиновных оправдать, врагов революции расстрелять, друзей — тоже, на всякий случай.
Я считаю, что суды можно сравнивать по честности, но не вижу в этом никакой причинно-следственной связи с их полезностью. Это просто демократический фетиш.
И правда, зачем коммунисту честные суды?
Шутки пишут себя сами.
Самое удивительное, что эту оду честным судам вы как-то совмещаете с тем, что на российском сервере уравниваете нацизм с коммунизмом, но, очевидно, не хотите, чтобы вас за это честно экстрадировали в Россию и честно судили.
Потому что я не считаю российские суды честными (и последние шесть слов в цитате — это довольно смешная шутка), и не считаю «российский сервер» продуктом российских судов, или существующим благодаря российским судам, или тому подобное.
Что вас здесь удивляет? Сможете явно написать набор тезисов, соответствующих [вашей интерпретации] моей позиции, которые приводят, по-вашему, к противоречию?
Мы уже выяснили с помощью @vadimr и @Wesha, что совершенно неважно, что люди о себе говорят и пишут. Использовать как аргумент, что там люди о себе говорят и пишут, [коммунистам] больше нельзя.
На практике нацистский режим Гитлера физически уничтожил десятки миллионов людей
Как там писали рядом? А, во: время такое было, перегибы на местах, истинные враги режима, и вообще, never been tried, это был ненастоящий нацизм, Гиммлер лично патроны подавал :-) :-) :-) huehuehue (это я смеюсь на бразильском, если что)
А коммунистический режим Сталина сделал жизнь лучше десятков миллионов людей.
И Сталин + Мао никого не уничтожили, да?
Построение коммунизма не требует загонять людей в лагеря или расстреливать их.
Но без этого коммунизм не строится совсем.
Он и с этим не строится, конечно, но чё-т оказывается, что новый человек пока ещё не вывелся, поэтому приходится загонять в лагеря нежелающих прогрессивно мыслиться.
Почему Вы не считаете эти действия неотъемлемым признаком демократии?
Потому что лагеря/расстрелы, голод и экономическая смерть были в каждом пытающемся построить коммунизм государстве (кроме, возможно, Швеции конца второй трети XX-го века, если вам вдруг очень захочется сделать этот список непустым ценой некоторого натягивания совы на глобус), а демократические государства без этого всего существуют и достаточно стабильны.
Почему не ставите знак равенства между демократией и расизмом?
Я ставлю знак равенства (вернее, включения) между современными американскими демократами и расизмом.
Во времена Хрущёва в США негра, подавшего документы в университет, по решению суда посадили в психушку с формулировкой "только сумасшедший может считать, что негр может учиться в университете".
Этим негром был Альберт Эйнштейн Clennon King, который в эпоху до десегрегации подал документы в конкретный вуз для белых, Ole Miss (хотя смешанные вузы и вузы для чёрных были и тогда, и некоторые из них были весьма успешны — здесь нет социально релевантного расизма), и речь шла о том, что «чёрный, считающий, что он может попасть в вуз только для белых, очевидно не в себе» (а не «попасть в вуз» вообще), что, вообще говоря, верный тезис: если я пойду в спа-салон только для женщин и попрошу там себе что-нибудь депилировать, то я либо тролль, либо поехавший.
Не то чтобы это было важно ввиду вышесказанного, но просто это наглядно иллюстрирует, что коммунист не может не врать.
Будут. А ещё будут какие-нибудь третьи суды (как их назвать, хз), почему нет? (1) Постарайтесь ответить на этот вопрос так, чтобы ответ на вопрос (2) не был очевидным в вашей логической системе.
Кстати, что лучше — когда есть только BLM (или только WASP)-суд, или когда есть выбор? Или монополизация судебной системы каким-то магическим образом делает её беспристрастной?
а белые и черные сделок совершать между собой не будут, ибо о арбитре не договорятся.
Предполагая, что ответ на вопрос (1) — нет, то чем это плохо? (2)
Это в гражданском праве.
Мы (пусть и не с вами) изначально обсуждали добровольные контракты между отдельными агентами и разрешение конфликтов в них. Это плюс-минус гражданское право.
А что с уголовным творится будет - вообще не представляю. В какой околоток замели, тот суд и будет решать?
Это, очевидно, вне зоны действия смарт-контрактов, но можно обсудить и это.
В каком добровольном объединении людей по общим правилам преступление было совершено, по тем принципам и будет решаться.
Ну, почти как сегодня, только у людей вариантов выбора больше.
и потенциальному правонарушителю нужно будет успеть добежать до патрульной машины любимого цвета, тогда потерпевшим придется “его” судье пытаться доказать, что он виноват
Прямо как сегодня, когда «свой» судья отпускает и даёт сбежать на «свою» территорию, как было с неким Tom Alexandrovich.
А у “его” судьи он вип подписчик, и судья аудитории лишаться не хочет.
К такому судье клиентами пойдут только те, кто хочет недобросовестного расследования, поэтому с ними, например, другие люди не захотят заключать контракты.
В суд, как известно, обращаются за защитой собственных интересов, а не за справедливостью.
Чтобы сэкономить писанину, я задам наводящий вопрос: этот фактор ведь не мешает вам формировать мнение, что судебная система страны A честнее, чем страны B?
Если этот вопрос вам ни на что не намекнёт, и если вы прямо напишете «Нет, я не считаю, что суды и судебные системы разных стран можно сравнивать по честности, и люди, которые так делают, неправы», то я с радостью напишу больше.
В какой эхо-камере ты жил, если факт того, что кто-то может презирать коммунизм так же, как нацизм, и считать комми-методички неотличимыми от таковых у наци, откровением?
RT — пережёванная панорама наиболее ярких случаев, в большинстве случаев уровня «Вася напел битлз». Первичный источник из них так себе, поэтому слабость его среди американцев вполне понятна.
Очевидно, что речь идёт о повторяющихся и различных клиентах арбитра: если по мнению агента, выбирающего суд/арбитра, суд C₁ существенно менее справедливо выносил решения по предыдущим вопросам, чем суд C₂, то агент заключит контракт с судом C₂, а не с C₁.
Во-первых, если выход за границы можно обнаружить при компиляции, то для этого не требуется какой-то особый язык
Требуется, конечно, потому что это зависит от системы типов языка.
современные компиляторы находят эти ошибки и при компиляции чистого C.
А, надо просто обновить компиляторы, и подавляющая часть CVE, связанная с выходом за границы (или с ошибками лайфтаймов, и так далее), просто уйдёт. Во люди дураки, не обновляют компиляторы почему-то! Как же они не догадались?
Или что ты хотел сказать своим комментарием?
Я хотел сказать, что, ну, вопрос в том, когда эта ошибка определяется (первая фраза-не-цитата в моём комментарии). Иными словами, как рано вы о ней узнаёте. И узнать во время написания кода или при компиляции сильно лучше, чем узнать во время выполнения через экзепшон из std::vector::at и тому подобные, что, в свою очередь, ещё лучше, чем узнать (если повезёт) из кордампа в совсем другом месте, что [] обратилось куда-то не туда.
А можно ли доказать, что если у нас есть теорема, которая доказывается через пределы, то она может быть доказана через гиперреалы и наоборот?
Смотря что за теорема.
Для высказываний на языке первого порядка это не нужно доказывать, потому что это выполняется по построению.
Когда говорят об ℝ, то неявно смешивают две разных сущности. С одной стороны, у нас есть структура ℛ ≜ (ℝ, +, ×, <, 0, 1) — это общеизвестное множество с общеизвестными операциями и предикатами. С другой стороны, у нас есть теория Thℛ, состоящая из некоторых аксиом (и выводимых из них теорем на языке логики первого порядка). ℛ является моделью Thℛ: в ℛ выполняются все утверждения из Thℛ.
Олсо, часто говорят об ℝ как о модели Thℛ, хотя правильнее было бы говорить об ℛ как о модели, потому что само по себе ℝ — это просто множество, и само по себе, если забыть про остальную часть структуры ℛ, оно ничем не отличается от, не знаю, ℝ×ℝ, которое, в свою очередь, ничем не отличается как множество от ℂ, хотя ℝ и ℂ сильно различаются как структуры: скажем, на ℂ нет консистентного с умножением порядка. Но я дальше местами буду делать так же: абьюз языка привычен.
Так вот, когда мы говорим, что ∀x, y. x + y ≡ y + x, то мы можем иметь в виду утверждение из Thℛ, доказуемое из аксиом этой теории, либо мы можем иметь в виду, так сказать, наблюдаемый факт (или постулируемый по построению факт) про конкретное знакомое со школы множество ℝ (или, вернее, структуру ℛ).
ℝ не обязано быть единственной моделью Thℛ. Его нестандартное расширение *ℝ строится как элементарно эквивалентное ℝ — то есть, если ψ — высказывание первого порядка Thℛ, то верность ψ в ℝ эквивалентна верности ψ в *ℝ.
Для высказываний на языках более высокого порядка это не обязано выполняться, построение нестандартной модели их не сохраняет: например, существуют утверждения, квантифицирующие по подмножествам, выполняющиеся в ℝ и ломающиеся в *ℝ. Например, утверждение «любое ограниченное множество имеет супремум» верно в ℝ и неверно в *ℝ. Обязаны сохраняться только утверждения, квантифицирующиеся по внутренним множествам (но подробное описание этого потребует ещё пары абзацев, боюсь).
Но если начинать упарываться основаниями, то там есть вещи поинтереснее в самом определении вещественных чисел: например, относительно общеизвестный факт — вещественные по Коши (пределы последовательностей из ℚ) и по Дедекинду (соответствующие сечения) — одно и то же. Но на самом делешкольное вузовское доказательство этого факта работает только в Set, а если рассматривать произвольные топосы, то вещественные Коши и Дедекиндовы вещественные не обязаны совпадать: там верно лишь Коши ⊆ Дедекинд (и есть конструктивно строящиеся топосы, где равенство не выполняется).
Очень круто. Вы всё-таки можете привести пример, где вы считаете, что вы не за патернализм?
Сорри за вопрос без знака вопроса в моём прошлом комментарии.
Мне будет обидно, что “за мои налоги” государство тратит деньги на всяких дармоедов.
Не понял логики. Чем принудительная страховка отличается от «за мои налоги»? Какие вообще налоги, если нет никакой принудительной страховки от этого?
А помогать вам будут из дорожного налога.
А, то есть, разница исключительно в названиях? Ну ладно, пусть. Я проигнорирую, что (X + Y) + 0 = (X + 0) + Y. Я даже готов предположить, что эти деньги не перемешиваются в бюджете государства и не перераспределяются на те цели, которые государство считает более нужным в моменте.
С чего бы мне будут помогать из дорожного налога? Это ровно та же социалочка, просто, ну, с другим названием.
Но вот гляжу я по сторонам и мне кажется, что большинство нормально не отложат
А нахрена им нормально откладывать, если другие люди прикроют?
Желание не понимать начинает становиться воинственным, ну да ладно.
Я уже подробно написал выше, почему этот перевод так себе. Если в тот раз не помогло (хотя вы не задали ни одного уточняющего вопроса, а просто проигнорировали этот кусок), то в этот раз попробую аналогией.
То, что вы предлагаете и называете переводом — это как если бы вы объясняли джаваскриптеру концепцию проверки типов C++, говоря, что предлагается просто писать
и никакие проверки не нужны, потому что эта функция вызывается с тремя аргументами, первый из которых — целое число, второй — строка, третий — число с плавающей точкой двойной точности.
При этом о том, что никто это не проверяет, кроме читающего код, вы бы стыдливо умалчивали.
Потому что объяснение было механизма, а не самой концепции «можно доказуемо сравнить два числа».
Ну вообще да: в вашем коде это просто вопрос соглашения между программистами: мы договорились, что
valid_indexточно валидный, честное слово!Я надеялся, что если у вас есть инструмент для сравнения произвольных m и n, то вы сможете им воспользоваться для сравнения (i - N/2) с нулём (или, вернее, i с N/2, но неважно).
Потому что здесь ключевой вопрос — что такое «валидный индекс» (или «признак невалидности»). В частности…
…на C++ выражается не это. На C++ выражается что-то ближе к «всё честно, мамой клянус!»: компилятор не проверяет валидность индексов, корректность
element_at, и так далее.valid_index { v.size() + 1 }— существующий терм, компилятор не даст вам за такое по рукам. Функцияпринимается компилятором, он от неё не расстроится и даже ворнинга не покажет. Функция
тоже принимается.
Для того, чтобы читающему код убедиться в корректности, ему нужно посмотреть на реализацию
element_at(и всех других функций, принимающих, возвращающих и преобразующихvalid_index/index_validity). Мне на реализациюisLTсмотреть не нужно, мне достаточно её типа (и проверяемой тайпчекером тотальности), чтобы убедиться, что она делает что обещает.На идрисе и подобных языках написать
isLT, которая бы подобным образом врала, просто невозможно.Ну, есть некоторые причины, почему для непривычных систем типов нужны непривычные языки, поэтому это как раз неудивительно.
Не магическим.
Вот функция в рантайме получает два числа и возвращает либо доказательство, что одно меньше второго, либо доказательство, что не меньше:
Дальше с этим доказательством можно безопасно индексировать массивы. Можно статически (без рантайм-проверок) из доказательства m < n получить доказательство m < n + 1. Или, если вы знаете, что m > 0, что m - 1 < n.
Или, если вдруг m строится пусть даже в рантайме, но согласно допустимому диапазону индексов (ну как iota, например, от 0 до размера вектора), то рантайм-проверки тоже не нужны.
В данном случае — прямой проверкой. У меня есть функция, упрощая, возвращающая либо результат i - N / 2, либо доказательство, что i < N / 2.
Но если я где-то раньше проверил, скажем, что 2i ≥ N, то я могу воспользоваться этим фактом, чтобы ничего не проверять здесь, экономя время в рантайме.
Каким образом?
И место преступления (презирать коммунизм — это, кстати, какая статья?) — это здесь что? Адрес регистрации ООО (или что оно там) «Хабр»?
Я не понимаю, как можно с серьёзной миной почти напрямую писать «для коммунизма важна не честность суда, а революционная целесообразность, и поэтому честность суда не важна вообще нигде», а потом удивляться, что из любого цивилизованного общества коммунистов гонят уринированным текстилём.
При коммунизме вообще ничего не предусмотрено, кроме вайбов и эмоций, которыми коммунист в среднем руководствуется. Дальше оно там как-нибудь само, чего там думать, отнять всё и поделить, виновных наказать, невиновных оправдать, врагов революции расстрелять, друзей — тоже, на всякий случай.
Зависимые типы, например.
И правда, зачем коммунисту честные суды?
Шутки пишут себя сами.
Потому что я не считаю российские суды честными (и последние шесть слов в цитате — это довольно смешная шутка), и не считаю «российский сервер» продуктом российских судов, или существующим благодаря российским судам, или тому подобное.
Что вас здесь удивляет? Сможете явно написать набор тезисов, соответствующих [вашей интерпретации] моей позиции, которые приводят, по-вашему, к противоречию?
А вы такие же вопросы задавали про нацистскую Германию (и нашли на них ответы), или людоедскость тамошних законов постулируется?
Мы уже выяснили с помощью @vadimr и @Wesha, что совершенно неважно, что люди о себе говорят и пишут. Использовать как аргумент, что там люди о себе говорят и пишут, [коммунистам] больше нельзя.
Как там писали рядом? А, во: время такое было, перегибы на местах, истинные враги режима, и вообще, never been tried, это был ненастоящий нацизм, Гиммлер лично патроны подавал :-) :-) :-) huehuehue (это я смеюсь на бразильском, если что)
И Сталин + Мао никого не уничтожили, да?
Но без этого коммунизм не строится совсем.
Он и с этим не строится, конечно, но чё-т оказывается, что новый человек пока ещё не вывелся, поэтому приходится загонять в лагеря нежелающих прогрессивно мыслиться.
Потому что лагеря/расстрелы, голод и экономическая смерть были в каждом пытающемся построить коммунизм государстве (кроме, возможно, Швеции конца второй трети XX-го века, если вам вдруг очень захочется сделать этот список непустым ценой некоторого натягивания совы на глобус), а демократические государства без этого всего существуют и достаточно стабильны.
Я ставлю знак равенства (вернее, включения) между современными американскими демократами и расизмом.
Этим негром был
Альберт ЭйнштейнClennon King, который в эпоху до десегрегации подал документы в конкретный вуз для белых, Ole Miss (хотя смешанные вузы и вузы для чёрных были и тогда, и некоторые из них были весьма успешны — здесь нет социально релевантного расизма), и речь шла о том, что «чёрный, считающий, что он может попасть в вуз только для белых, очевидно не в себе» (а не «попасть в вуз» вообще), что, вообще говоря, верный тезис: если я пойду в спа-салон только для женщин и попрошу там себе что-нибудь депилировать, то я либо тролль, либо поехавший.Не то чтобы это было важно ввиду вышесказанного, но просто это наглядно иллюстрирует, что коммунист не может не врать.
Будут. А ещё будут какие-нибудь третьи суды (как их назвать, хз), почему нет? (1) Постарайтесь ответить на этот вопрос так, чтобы ответ на вопрос (2) не был очевидным в вашей логической системе.
Кстати, что лучше — когда есть только BLM (или только WASP)-суд, или когда есть выбор? Или монополизация судебной системы каким-то магическим образом делает её беспристрастной?
Предполагая, что ответ на вопрос (1) — нет, то чем это плохо? (2)
Мы (пусть и не с вами) изначально обсуждали добровольные контракты между отдельными агентами и разрешение конфликтов в них. Это плюс-минус гражданское право.
Это, очевидно, вне зоны действия смарт-контрактов, но можно обсудить и это.
В каком добровольном объединении людей по общим правилам преступление было совершено, по тем принципам и будет решаться.
Ну, почти как сегодня, только у людей вариантов выбора больше.
Прямо как сегодня, когда «свой» судья отпускает и даёт сбежать на «свою» территорию, как было с неким Tom Alexandrovich.
К такому судье клиентами пойдут только те, кто хочет недобросовестного расследования, поэтому с ними, например, другие люди не захотят заключать контракты.
Выбор суда — это тоже сигнал.
Чтобы сэкономить писанину, я задам наводящий вопрос: этот фактор ведь не мешает вам формировать мнение, что судебная система страны A честнее, чем страны B?
Если этот вопрос вам ни на что не намекнёт, и если вы прямо напишете «Нет, я не считаю, что суды и судебные системы разных стран можно сравнивать по честности, и люди, которые так делают, неправы», то я с радостью напишу больше.
В какой эхо-камере ты жил, если факт того, что кто-то может презирать коммунизм так же, как нацизм, и считать комми-методички неотличимыми от таковых у наци, откровением?
RT — пережёванная панорама наиболее ярких случаев, в большинстве случаев уровня «Вася напел битлз». Первичный источник из них так себе, поэтому слабость его среди американцев вполне понятна.
Подозреваю, что с китайскими друзьями так же.
Очевидно, что речь идёт о повторяющихся и различных клиентах арбитра: если по мнению агента, выбирающего суд/арбитра, суд C₁ существенно менее справедливо выносил решения по предыдущим вопросам, чем суд C₂, то агент заключит контракт с судом C₂, а не с C₁.
Требуется, конечно, потому что это зависит от системы типов языка.
А, надо просто обновить компиляторы, и подавляющая часть CVE, связанная с выходом за границы (или с ошибками лайфтаймов, и так далее), просто уйдёт. Во люди дураки, не обновляют компиляторы почему-то! Как же они не догадались?
Я хотел сказать, что, ну, вопрос в том, когда эта ошибка определяется (первая фраза-не-цитата в моём комментарии). Иными словами, как рано вы о ней узнаёте. И узнать во время написания кода или при компиляции сильно лучше, чем узнать во время выполнения через экзепшон из
std::vector::atи тому подобные, что, в свою очередь, ещё лучше, чем узнать (если повезёт) из кордампа в совсем другом месте, что[]обратилось куда-то не туда.Вопрос в том, когда она определяется:
Во время компиляции всегда.
Во время компиляции, если сойдутся звёзды у статического анализатора компилятора.
Во время выполнения в момент выхода за границы.
Во время выполнения где-то в другом месте через 100500 тактов, потому что проезд по памяти прошёл незамеченным.
Плюсы успешно балансируют между (3) и (4).
Смотря что за теорема.
Для высказываний на языке первого порядка это не нужно доказывать, потому что это выполняется по построению.
Когда говорят об ℝ, то неявно смешивают две разных сущности. С одной стороны, у нас есть структура ℛ ≜ (ℝ, +, ×, <, 0, 1) — это общеизвестное множество с общеизвестными операциями и предикатами. С другой стороны, у нас есть теория Thℛ, состоящая из некоторых аксиом (и выводимых из них теорем на языке логики первого порядка). ℛ является моделью Thℛ: в ℛ выполняются все утверждения из Thℛ.
Олсо, часто говорят об ℝ как о модели Thℛ, хотя правильнее было бы говорить об ℛ как о модели, потому что само по себе ℝ — это просто множество, и само по себе, если забыть про остальную часть структуры ℛ, оно ничем не отличается от, не знаю, ℝ×ℝ, которое, в свою очередь, ничем не отличается как множество от ℂ, хотя ℝ и ℂ сильно различаются как структуры: скажем, на ℂ нет консистентного с умножением порядка. Но я дальше местами буду делать так же: абьюз языка привычен.
Так вот, когда мы говорим, что ∀x, y. x + y ≡ y + x, то мы можем иметь в виду утверждение из Thℛ, доказуемое из аксиом этой теории, либо мы можем иметь в виду, так сказать, наблюдаемый факт (или постулируемый по построению факт) про конкретное знакомое со школы множество ℝ (или, вернее, структуру ℛ).
ℝ не обязано быть единственной моделью Thℛ. Его нестандартное расширение *ℝ строится как элементарно эквивалентное ℝ — то есть, если ψ — высказывание первого порядка Thℛ, то верность ψ в ℝ эквивалентна верности ψ в *ℝ.
Для высказываний на языках более высокого порядка это не обязано выполняться, построение нестандартной модели их не сохраняет: например, существуют утверждения, квантифицирующие по подмножествам, выполняющиеся в ℝ и ломающиеся в *ℝ. Например, утверждение «любое ограниченное множество имеет супремум» верно в ℝ и неверно в *ℝ. Обязаны сохраняться только утверждения, квантифицирующиеся по внутренним множествам (но подробное описание этого потребует ещё пары абзацев, боюсь).
Но если начинать упарываться основаниями, то там есть вещи поинтереснее в самом определении вещественных чисел: например, относительно общеизвестный факт — вещественные по Коши (пределы последовательностей из ℚ) и по Дедекинду (соответствующие сечения) — одно и то же. Но на самом деле
школьноевузовское доказательство этого факта работает только в Set, а если рассматривать произвольные топосы, то вещественные Коши и Дедекиндовы вещественные не обязаны совпадать: там верно лишь Коши ⊆ Дедекинд (и есть конструктивно строящиеся топосы, где равенство не выполняется).Очень круто. Вы всё-таки можете привести пример, где вы считаете, что вы не за патернализм?
Сорри за вопрос без знака вопроса в моём прошлом комментарии.
Не понял логики. Чем принудительная страховка отличается от «за мои налоги»? Какие вообще налоги, если нет никакой принудительной страховки от этого?
А, то есть, разница исключительно в названиях? Ну ладно, пусть. Я проигнорирую, что (X + Y) + 0 = (X + 0) + Y. Я даже готов предположить, что эти деньги не перемешиваются в бюджете государства и не перераспределяются на те цели, которые государство считает более нужным в моменте.
С чего бы мне будут помогать из дорожного налога? Это ровно та же социалочка, просто, ну, с другим названием.
А нахрена им нормально откладывать, если другие люди прикроют?
Нет ли здесь обеления коммунизма?