Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СборкаМЛ_05_2008.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.37 Mб
Скачать

2.6. Арифметика Пресбургера

Арифметику натуральных чисел обычно формализуют в сигнатуре N = (0, s, +, ). Стандартной моделью считается структура с основным множеством N натуральных чисел, включая число 0, s интерпретируется, как одноместная функция взятия следующего числа, + и  интерпретируются как обычные операции сложения и умножения натуральных чисел. Известно, что множество Th(N) предложений, истинных в стандартной модели, алгоритмически неразрешимо.

Рассмотрим сигнатуру Z = (0, 1, +, , =, <, D2D3, …), полученную удалением из сигнатуры N функционального символа “” и добавлением к ней функционального двухместного символа “” и одноместных предикатных символов D2D3, … . Стандартной моделью считаем структуру с основным множеством Z целых чисел; функциональные символы + и   интерпретируются как операции сложения и вычитания целых чисел, Dm  одноместный предикатный символ, который при заданном значении m = 2, 3,… интерпретируется следующим образом

Dm(x)  "число x делится на m без остатка”.

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

Китайская теорема об остатках.

Пусть m1, m2, …, mkнабор, состоящий из k (k > 1) натуральных попарно взаимно простых чисел, и целые числа r1, r2, …, rkудовлетворяют неравенствам 0  ri  mi (i = 1,2,…, k). Тогда существует единственное натуральное число K, удовлетворяющее неравенству K  M = m1·m2·…·mk и такое, что K mod mi = ri (i = 1,2,…, k).

Искомое число K можно найти следующим образом. Для = 1,2,…, k положим Mi = M/mi. Очевидно при каждом значении i числа Mi и mi – взаимно просты, поэтому для каждого i = 1,2,…, k существуют числа ui, vi такие, что

miui Mivi = 1.

Умножая это равенство на ri, получим

miui riMiviri = ri. (1)

Заметим, что

ri, при j = i (из равенства (1)

(Miviri) mod mj =

0, при j  i. (из определения Mi).

и, следовательно, в качестве K можно взять ( Miviri) mod M.

Переходим теперь к рассмотрению манипуляций с формулами арифметики Пресбургера, используемыми при элиминации кванторов. Для краткости терм вида 1 + 1 +  + 1, содержащий k  единиц (здесь он записан в инфиксной форме с опусканием скобок) будем обозначать символом k. Терм вида x + x +  + x, где x  переменная, имеющая в рассматриваемом терме k > 0 вхождений, обозначаем kx. Аналогично терм вида t + t +…+ t, имеющий k вхождений терма t, обозначаем kt. Терм вида 0  t, где t  произвольный терм, будем записывать как t.

Литералы, то есть атомарные формулы и их отрицания, могут иметь следующий вид

(s), (r < s), Dm(s), (r = s), (r < s), Dm(s)

где r и s произвольные термы. Атомарные формулы вида (s), (r < s) и Dm(s), будем называть соответственно равенствами, неравенствами и D-атомами.

Конституантой называем конъюнкцию литералов, представляющую логическое слагаемое в дизъюнктивной нормальной форме (ДНФ) формулы, составленной из литералов.

Ввиду возможности приведения любой формулы к антипрефиксному виду, достаточно рассмотреть возможность элиминации квантора только для формул вида хA, где A бескванторная формула, составленная из литералов и представленная в виде ДНФ. Покажем, что формулу A можно преобразовать так, что каждая ее конституанта будет содержать не более одного нижнего, не более одного верхнего ограничения, а также не более одного D-атома.

Используя равносильности

(s)  (r < (s+1))  (s < (r+1))

(s)  (s)  (s < r)

Dm(s)  Dm(s+1)  Dm(s+2)  …  Dm(s+(m1)

можно любую ДНФ, составленную из литералов, превратить в ДНФ, не содержащую равенств и отрицаний.

Атомарную формулу представленную в виде (kx t) будем называть верхним, а в виде (t < kx) нижним ограничением для переменной x, полагая, что t  терм, не содержащий переменной x, а k  терм вовсе не содержащий переменных.

Если в какой-либо конституанте есть подформула вида

(t1 k1x)  (t2 k2x),

состоящая из двух нижних ограничений, то заменим ее формулой

(tk1x)  (k1t2 k2t1)  (t1 k1x)  (k1t2 k2t1)  (t2 k2x)  (k2t1 k1t2),

затем, избавимся от равенств, как указано выше, и вновь приведем формулу к ДНФ. Применяя описанную процедуру, можно добиться того, что каждая конституанта в ДНФ будет содержать не более одного нижнего ограничения для переменной x. Аналогично поступаем и с верхними ограничениями.

Покажем теперь, как добиться того, чтобы каждая конституанта содержала не более одного D-атома, зависящего от переменной x.

Если в атомарной формуле вида Dm(s) терм s зависит от переменной x, то его представим в виде kx  t, где t не зависит от x. Для этого будем использовать соотношения

Dm(kx)  Dm(kx0)

Dm(kx)  Dm(kx0)

Dm(kx+t )  Dm(kx(t))

Dm(kx+t )  Dm(kxt)

Далее каждую атомарную подформулу вида Dm(kxt) заменим формулой

j = 0…m-1 [Dm(kx j)  Dm(tj)].

Тем самым все D-атомы, зависящие от переменной x, можно представить в виде Dm(kxi), где k, i  термы, представляющие натуральные числа.

Далее, соотношения

Dm(kxi)  j = 0…m-1 [Dm(kj  i)  Dm(x  j)]

позволяют избавиться от «коэффициента» k при переменной x в формулах вида Dm(kx  i). Заметим, что истинностное значение встречающихся здесь формул вида Dm(kj  i), вычисляется при конкретных значениях параметров m, k, i, j непосредственно с помощью арифметических операций.

Теперь нетрудно видеть, что формулу A можно представить в ДНФ, каждая конституанта которой содержит не более одного нижнего и не более одного верхнего ограничения для переменной x, а во всех ее D-атомах вида Dm(s) терм s имеет вид xi. Далее покажем, как добиться того, чтобы в каждой конституанте было не более одного D-атома

Каждую подформулу вида Dm(xi) заменяем формулой

Dq1(xi)  Dq2(xi)  … Dqn(xi),

где q1, q2, …, qn сомножители в разложении числа m в произведение степеней простых попарно различных чисел p1p2,…, pn.

Предположим, что после таких замен в конституанте встретятся две подформулы вида

Dq (xi) и Dq'(xi'),

где q= pa, q' = pb  степени одного и того же простого числа p, пусть для определенности a  b. В таком случае в рассматриваемой конституанте заменяем Dq (xi) на Dq (i'i). Повторяем такие замены до тех пор, пока каждая конституанта не предстанет в виде

Dq1(xi1)  Dq2(xi2)  … Dqk(xik) B, (*)

где все D-атомы сгруппированы слева, числа q1q2…qk взаимно просты, а B остальная часть конституанты, не содержащая D-атомов.

Заменим i1i2, …, ik на i1*i2*, … ik* где i1*i2*, … ik*  остатки от деления i1i2, …, ik на q1q2, …, qk соответственно.

Пусть qq1q2…qk, тогда по китайской теореме об остатках существует q< q такое, что остаток от деления q на qj равен ij* (j = 1, 2, …, k) и подформулу

Dq1(xi1*)  Dq2(xi2*)  … Dqk(xik*)

заменяем формулой

Dq(x  q).

В результате рассмотренных преобразований каждая конституанта с предшествующим квантором существования по переменной x будет содержать не более одного нижнего ограничения вида (s < jx), не более одного верхнего ограничения вида kx < t, а также не более одного D-атома вида Dq(x  q). Таким образом, будем иметь дело с подформулой одного из следующих видов.

  1. х[Dm(xi)  (s < jx)  (kx < t)]

  2. х[(s < jx)  (kx < t)]

  3. х[Dm(xi)  (kx < t)]

  4. х[Dm(xi)  (s < jx)]

  5. х Dm(xi)

  6. х (s < jx)

  7. х (kx < t)

В первом случае имеем

х[Dm(xi)  (s < jx)  (kx < t)]

х[Djkm(jkxjki)  (ks < jkx)  (jkx < jt)]

х[Djkm(xjki)  (ks < x)  (x < jt)]

х[Dm(xi)  (s < x)  (x < t)]

(s+1 < t)  Dm(s+1i) (s+2<t) & Dm(s+2i) (s+m <t) & Dm(s+mi),

где m = jkm, i = jki, s = ks, t = jt, тем самым переменная x исключена.

Во втором случае

х[(s < jx)  (kx < t)]

х[(ks < kjx)  (kjx < jt)]

Djk(x0)  (ks < x)  (x < jt)] (такой случай уже был)

В третьем случае

х[Dm(xi)  kx < t]  (0 < 1)

Во всех остальных случаях также получаем (0 < 1). Аналогично, исключаются остальные кванторы.

Упражнения.

Элиминировать кванторы из следующих формул арифметики Пресбургера.

  1. x [(y+z < x ) & (2x < 3y)] Ответ: 2z+2<y

  2. x [(2y+z < 2x) & (x < y+2z)] Ответ: 0<z.

  3. x [(y+3z < 2x) & (2x < 3y+z)]

  4. x y (6y+4x3z = 0) Ответ: D2(z).

  5. x y (6y+4x1 = 0) Ответ: 0=1

  6. x y (6y+5x7 = 0) Ответ: 0=0

  7. x y z (6y+4x+12z = u+1) Ответ: D2(u).

  8. x y [(3x+4y=12) & (6x+2y = z)] Ответ:.

  9. x [(2y+z < 2x) & (2x < 3y+z)& D3(2x4)] Ответ: (1<y)& D3(2y+z) (2<y)& D3(2y+z2) (3<y)& D3(2y+z1)

  10. x y  [D4(x2y) & D3(3x2y)]

  11. z y x [A  B  C], где A=[(z+2y<x) & (2x<2z+4y+3) & D3(2xyz)], B=[(2zy<x) & (x<2z+2y) & (x<3z+y) & D2(xyz)], C=[(7z3y<4x) & D6(4x5y3z) & D8(6x2)]