Написать пост

Счет без чисел

Аватарка пользователя Владимир Булыгин

Отношение «равное себе» характеризует то единственно общее, что есть у каждого элемента множества. Поскольку оно единственно, то единица таким образом и выражается. Каждое последующее число то, что равно себе и не равно каждому предыдущему.

Когда считаем, мы выделяем в предметах отношения: равняться себе и различаться с каждым предыдущим. Именно эти отношения заносим в N в виде символьной записи чисел.

В такой интерпретации отношение «равное себе» характеризует то единственно общее, что есть у каждого элемента множества. Поскольку оно единственно, то единица таким образом и выражается.

«Равное себе» (что истинно) равно единице. Идейно, это близко тому, как в теории категорий дается определение единичному (тождественному) морфизму.

Счет без чисел 1
учебник-по-теории-категорий.pdf (komar.in)

Для сравнения, в аксиомах Пеано единица никак не определяется. Лишь констатируется, что она есть. В определении Фреге-Рассела единица выводится, но в таком определении не дается понимания как именно единица связана с тем, что считается. И, как следствие, неясно становится, как связаны последующие числа с тем, что считаем.

В кольцах вообще могут быть заданы несколько «единичных элементов», которые не мыслимы без операции. Однако сама по себе единица не связана с какой-либо алгебраической операцией. Сказать «элемент – один» можно. Арифметика именно с этого начинается.

Часто утверждается, что численные отношения начинаются там, где имеются ввиду взаимно-однозначные отношения предметов. Это верно, но без учета определения единицы. Поскольку неявно ее используем в таком понимании. И поэтому такой подход также оказывается не годен при конструировании всех чисел.

Ниже решение НЕ ТАКОЕ, как у Фреге:

Понятия F и G равночисленны, если объекты их объемов находятся во взаимно-ОДНОзначном соответствии.

Его пример:

Если официант хочет быть уверен, что он положил на стол ножей столько же, сколько и тарелок, ему нет надобности считать и те и другие; как только он справа от каждой тарелки рядом положит нож, каждый нож на столе будет находиться рядом с соответствующей тарелкой. Тарелки и ножи будут взаимно ОДНОзначно соотнесены друг с другом.

			#Ножа столько же, сколько и тарекли: 
print('''Количественно: ножа столько же, сколько и тарелки, если 
      ('нож' == 'нож') == ('тарелка' == 'тарелка') is''',  
  ("нож" == "нож") == ("тарелка" == "тарелка") ) #True


def iseq(m1, m2):
    #Как сказать для множеств, что они равномощны, 
    #не употребляя слова c "один", включая взаимно-ОДНОзначно?
    s1=[]; s2=[]
    for x, in m1:
        s1.append(x==x)
    for x in m2:
        s2.append(x==x)
    if s1 == s2:
        return "равномощны"
    else:
       return "не равномощны"
       
a="a"; b="b";c="c"; m1 = {a,b,c}
e="e"; r="r";p="p"; m2 = {e,r,p}
       
print("\n Множества", iseq(m1, m2), ":", m1, m2)
""" Вывод:
Множества равномощны : {'a', 'b', 'c'} {'r', 'e', 'p'}
"""
		

Неважно, что подставлять вместо Х в формулу 1==(x==x). Можно выразить и одно яблоко, и одно пять, и одно то, что больше семи. При этом, True и 1 – разные понятия в общем случае. 7>3 истинно, но это не единица.

			def f(s, x):
    print("  для X =", x)
    for xi in s:
        if x == xi:
            print("есть такое Х, что ", x, "==", xi)
            return "X – одно (Х есть)"
        else: # "не равное себе" эквивалентно "равное неравных"
          print("нет такого Х, что", x, "==", xi)
    return "X - ноль (его нет)"

a="a"; b="b"; c="c"; d="d";
print(f((a,b,c), b))
print(f((a,b,c), d))

""" Вывод будет следующим
  для X = b
нет такого Х, что b == a
есть такое Х, что b == b
X – одно (Х есть)
  для X = d
нет такого Х, что d == a
нет такого Х, что d == b
нет такого Х, что d == c
X - ноль (его нет)
"""
		
			#include 
using namespace std;

int main() {
  bool b1 { true };
  bool b0 { false };
  int i1 (1);
  int i0 (0);
    
  cout << (i0==((i0==i0) && (i0!=i0))) << endl; //1
  cout<< "Дословно: ноль равно тому, "<< endl;
  cout<<" что ноль равен и не равен нулю"<< endl;
  cout << "(i0==((i0==i0) && (i0!=i0)))"<< endl;

  cout << "арифметические операции с логическими значениями" << endl;
  cout << (b0 < b1) << endl; //1
  cout << (b0 / b1) << endl; //0
  cout << "логические операции с арифметическими значениями" << endl;
  cout << (i0 && i1) << endl; //0
  cout << (i0 || i1) << endl; //1

}
		
			def nn(s):
    """ Ноль - то, что не равно себе.
    Каждое последующее число - то, что
    равно себе и не равно каждому предыдущему"""
    print("Считаем элементы множества ", s, ",")
    print("используя возможность неявно суммировать единицы")
    n = (False != False)
    for x in s:
        n = (x == x) + n
    return n
    
m = {"a", "b", "c"}
n = nn(m)
print(n, "= |", m, "|")

""" Вывод:
Считаем элементы множества {"a", "b", "c"}
используя возможность неявно суммировать единицы
3 = | {"a", "b", "c"} |
"""

########################
print()

def nn(s):
  """ Ноль - то, что не равно себе.
  Каждое последующее число - то, что
  равно себе и не равно каждому предыдущему.
  При необходимости N можно сохранить"""
  print("Считаем элементы множества ", s, ",")
  print("не используя возможность суммирования")
  print("""
  *********************************************************
  * Когда считаем, мы выделяем в предметах отношения:  
  * быть равными себе и не равняться с предыдущими. 
  * Именно эти свойства (отношения) предметов сохраняем в N
  * в виде символьной записи чисел.
  *********************************************************
  """)
  print("Символьная запись чисел, при этом,\
  может быть любой, разумеется.\n")
  N = []
    
  zero = ((False == False) and (False != False))
  z = input("Введите символ числа ноль\
  или предоставьте это программе: ")
  if z:
    N.append(z)
  else: N.append(zero)
    
  se = []; #se.append(" ")
  for x in s:
    while(True):
      print("\nУже подсчитано", se)
      print("Уже используется ", N, "Введите символ числа,")
      print("что не равно каждому предыдущему и равно себе: ", end="")
      y = input()
      if y not in N and (y==y) and (x==x):
        '''кроме того, элементы множества s попарно различаются'''
        N.append(y)
        se.append(x)
        print()
        break
      else:
        print("\nError: \
        должно различаться с каждым предыдущим: \n")
  return N
 
m = {"a", "b", "c"}
N = nn(m)
print("упорядоченное множество натуральных чисел: \n", N)
print(N.pop(), "= |", m, "|")
		

PS. ОСНОВОПОЛОЖЕНИЯ АРИФМЕТИКИ Фреге

Как понимал числа Фреге: быть не равным себе => число 0; быть равным 0 => число 1

0 = |{}| 1 = |{} U {{}}|

184 открытий2К показов