Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 36 additions & 36 deletions docs/mts/formal-notation.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

```ebnf
File = { Stmt } ;
Stmt = Expr , "." ;
Stmt = Expr , [ "," ] ; (* comma separator is optional *)

Expr = DefExpr | EqExpr | NeqExpr | Term ;

Expand Down Expand Up @@ -100,9 +100,9 @@ Ctx = "[" , AbitSeq , "]" ;
У тебя явно зафиксированы: ориентированность, единственность, порождение равенства, guarded recursion.

```mts
(s : F) != (F : s).
(s : F) : (s = F).
{ s : F, s : G } : (F = G).
(s : F) != (F : s)
(s : F) : (s = F)
{ s : F, s : G } : (F = G)
```

> Заметь: это ровно твой тезис “`:` и `=` — разные онтологические категории, но `:` порождает `=`”.
Expand All @@ -112,20 +112,20 @@ Ctx = "[" , AbitSeq , "]" ;
Ты формулируешь её как “равенство сложных сводится к равенству компонентов” и даёшь схемы через `{…}`.

```mts
((a -> b) = (c -> d)) : { a = c, b = d }.
{ a = c, b = d } : ((a -> b) = (c -> d)).
((a -> b) = (c -> d)) : { a = c, b = d }
{ a = c, b = d } : ((a -> b) = (c -> d))

(♂a = ♂b) : (a = b).
(a = b) : (♂a = ♂b).
(♂a = ♂b) : (a = b)
(a = b) : (♂a = ♂b)

(a♀ = b♀) : (a = b).
(a = b) : (a♀ = b♀).
(a♀ = b♀) : (a = b)
(a = b) : (a♀ = b♀)

(¬a = ¬b) : (a = b).
(a = b) : (¬a = ¬b).
(¬a = ¬b) : (a = b)
(a = b) : (¬a = ¬b)

(!a = !b) : (a = b).
(a = b) : (!a = !b).
(!a = !b) : (a = b)
(a = b) : (!a = !b)
```

### 3.3 Кванторы форм: `∞`, `♂`, `♀`, `->`
Expand All @@ -134,20 +134,20 @@ Ctx = "[" , AbitSeq , "]" ;
“Фундаментальная теорема” про `r -> v : (r -> v)` тоже есть.

```mts
∞ : (∞ -> ∞).
∞ : (∞ -> ∞)

♂x : (♂x -> x).
x♀ : (x -> x♀).
♂x : (♂x -> x)
x♀ : (x -> x♀)

(r -> v) : (r -> v).
(r -> v) : (r -> v)
```

А “уникальность” акорня ты формулируешь как эквивалентность `x = (x -> x)` и `x = ∞`.
Без введения отдельного `⇔` даём как две направленные аксиомы через `:`:

```mts
(x = (x -> x)) : (x = ∞).
(x = ∞) : (x = (x -> x)).
(x = (x -> x)) : (x = ∞)
(x = ∞) : (x = (x -> x))
```

### 3.4 Инверсия направления `¬` (замена твоего `-`)
Expand All @@ -157,14 +157,14 @@ x♀ : (x -> x♀).
Чтобы не повторить внутреннюю несогласованность “и просто переворот, и совместимость”, фиксирую **одну когерентную схему**: инверсия переворачивает связь и рекурсивно применяется к компонентам (контравариантно):

```mts
¬(a -> b) : (¬b -> ¬a).
¬(a !-> b) : (¬b !-> ¬a).
¬(a -> b) : (¬b -> ¬a)
¬(a !-> b) : (¬b !-> ¬a)

¬(♂x) : (x♀).
¬(x♀) : (♂x).
¬∞ : ∞.
¬(♂x) : (x♀)
¬(x♀) : (♂x)
¬∞ : ∞

¬¬x = x.
¬¬x = x
```

### 3.5 Несвязь `!->` и смысловая дуальность `!`, `0/1`
Expand All @@ -175,23 +175,23 @@ x♀ : (x -> x♀).
Делаем `!->` определением “негации связи”:

```mts
!(a -> b) : (a !-> b).
!(a !-> b) : (a -> b).
!(a -> b) : (a !-> b)
!(a !-> b) : (a -> b)

!!x = x.
!!x = x
```

Определяем `1` как “единицу смысла” (у тебя это `♂∞ -> ∞♀`).

```mts
1 : (♂∞ -> ∞♀).
1 : (♂∞ -> ∞♀)
```

А `0` задаём как дуал `1` через `!` (и тем самым выполняем твои пункты 4–5):

```mts
!1 : 0.
!0 : 1.
!1 : 0
!0 : 1
```

(Отсюда, через “(s:F) : (s = F)” + симметрию равенства в ядре прувера, получатся привычные записи `0 = !1`, `1 = !0`.)
Expand All @@ -203,17 +203,17 @@ x♀ : (x -> x♀).
Фиксируем новую пару:

```mts
[ : (♂∞ -> ∞).
] : (∞ -> ∞♀).
[ : (♂∞ -> ∞)
] : (∞ -> ∞♀)
```

### 3.7 Акс. левоассоциативности цепочек

У тебя это отдельный “онтологический принцип группировки”.

```mts
(a -> b -> c) = ((a -> b) -> c).
(a -> (b -> c)) != ((a -> b) -> c).
(a -> b -> c) = ((a -> b) -> c)
(a -> (b -> c)) != ((a -> b) -> c)
```

---
Expand Down
2 changes: 1 addition & 1 deletion docs/mts/specification-v0.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ EBNF:

File ::= { Stmt } ;

Stmt ::= Expr "." ;
Stmt ::= Expr [ "," ] ; // comma separator is optional

Expr ::= DefExpr
| EqExpr
Expand Down
40 changes: 20 additions & 20 deletions examples/basic.mtl
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,32 @@
// ========================================

// Тождественность акорня самому себе
∞ = ∞.
∞ = ∞

// Акорень равен связи с самим собой
∞ = ∞ -> ∞.
∞ = ∞ -> ∞

// ========================================
// А5. Самозамыкание начала
// ♂x : (♂x -> x)
// ========================================

// Мужской оператор определяет самозамыкание начала
♂v = ♂v -> v.
♂v = ♂v -> v

// Вложенность мужского оператора
♂♂v = ♂♂v -> ♂v.
♂♂v = ♂♂v -> ♂v

// ========================================
// А6. Самозамыкание конца
// x♀ : (x -> x♀)
// ========================================

// Женский оператор определяет самозамыкание конца
r♀ = r -> r♀.
r♀ = r -> r♀

// Вложенность женского оператора
r♀♀ = r♀ -> r♀♀.
r♀♀ = r♀ -> r♀♀

// ========================================
// А7. Аксиома инверсии
Expand All @@ -42,57 +42,57 @@ r♀♀ = r♀ -> r♀♀.
// ========================================

// Инверсия мужского оператора
!♂x = x♀.
!♂x = x♀

// Инверсия женского оператора
!x♀ = ♂x.
!x♀ = ♂x

// Инверсия акорня
!♂∞ = ∞♀.
!∞♀ = ♂∞.
!♂∞ = ∞♀
!∞♀ = ♂∞

// ========================================
// А11. Левоассоциативность связи
// (a -> b -> c) = ((a -> b) -> c)
// ========================================

// Цепочка связей левоассоциативна
a -> b -> c = (a -> b) -> c.
a -> b -> c = (a -> b) -> c

// Более длинная цепочка
a -> b -> c -> d = ((a -> b) -> c) -> d.
a -> b -> c -> d = ((a -> b) -> c) -> d

// ========================================
// Степенной оператор
// a^n разворачивается в n применений связи
// ========================================

// a^2 = (a -> a)
a^2 = a -> a.
a^2 = a -> a

// a^3 = ((a -> a) -> a)
a^3 = (a -> a) -> a.
a^3 = (a -> a) -> a

// a^4 = (((a -> a) -> a) -> a)
a^4 = ((a -> a) -> a) -> a.
a^4 = ((a -> a) -> a) -> a

// ========================================
// Комбинированные выражения
// ========================================

// Применение ♂ к ∞
♂∞ = ♂∞ -> ∞.
♂∞ = ♂∞ -> ∞

// Применение ♀ к ∞
∞♀ = ∞ -> ∞♀.
∞♀ = ∞ -> ∞♀

// Комбинация ♂ и ♀
♂∞♀ = (♂∞)♀.
♂∞♀ = (♂∞)♀

// ========================================
// Неравенства
// ========================================

// Различные выражения не равны
♂∞♀ != ∞.
♂∞ != ∞♀.
♂∞♀ != ∞
♂∞ != ∞♀
16 changes: 8 additions & 8 deletions examples/test-issue-48-error.mtl
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
// Примеры аксиом и формул

// А4. Смысл (акорень): ∞ : (∞ -> ∞)
∞ = ∞ -> ∞.
∞ = ∞ -> ∞

// А5. Самозамыкание начала: ♂x : (♂x -> x)
♂v = ♂v -> v.
♂v = ♂v -> v

// А6. Самозамыкание конца: x♀ : (x -> x♀)
r♀ = r -> r♀.
r♀ = r -> r♀

// А7. Инверсия
!♂x = x♀.
!x♀ = ♂x.) // тут некорректная закрывающая скобка
!♂x = x♀
!x♀ = ♂x) // тут некорректная закрывающая скобка

// А11. Левоассоциативность
a -> b -> c = (a -> b) -> c.
a -> b -> c = (a -> b) -> c

// Степени
a^2 = a -> a.
a^3 = (a -> a) -> a.
a^2 = a -> a
a^3 = (a -> a) -> a
16 changes: 8 additions & 8 deletions examples/test-issue-48.mtl
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
// Пример из issue #48 с ошибкой парсинга

// А4. Смысл (акорень): ∞ : (∞ -> ∞)
∞ = ∞ -> ∞.
∞ = ∞ -> ∞

// А5. Самозамыкание начала: ♂x : (♂x -> x)
♂v = ♂v -> v.
♂v = ♂v -> v

// А6. Самозамыкание конца: x♀ : (x -> x♀)
r♀ = r -> r♀.
r♀ = r -> r♀

// А7. Инверсия
!♂x = x♀.
!x♀ = ♂x.) // тут некорректная закрывающая скобка
!♂x = x♀
!x♀ = ♂x) // тут некорректная закрывающая скобка

// А11. Левоассоциативность
a -> b -> c = (a -> b) -> c.
a -> b -> c = (a -> b) -> c

// Степени
a^2 = a -> a.
a^3 = (a -> a) -> a.
a^2 = a -> a
a^3 = (a -> a) -> a
7 changes: 6 additions & 1 deletion experiments/test-error-location.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { readFileSync } from 'fs'

const input = readFileSync('examples/test-issue-48-error.mtl', 'utf-8')
console.log('Input file:')

Check warning on line 5 in experiments/test-error-location.ts

View workflow job for this annotation

GitHub Actions / test

Unexpected console statement
console.log(input)
console.log('\n=== Parsing ===\n')

Expand Down Expand Up @@ -33,7 +33,12 @@

console.log('\nError context:')
console.log('Line', errorLine + 1, ':', lines[errorLine])
console.log('Error at column', errorCol, '-> character:', JSON.stringify(lines[errorLine][errorCol]))
console.log(
'Error at column',
errorCol,
'-> character:',
JSON.stringify(lines[errorLine][errorCol])
)

// Show visual pointer
const pointer = ' '.repeat(errorCol) + '^'
Expand Down
Loading
Loading