MI-FME Formalni metody a specifikace

Ekvivalence

  • A ∧ T ⇔ A
  • A ∧ F ⇔ F
  • A ∨ T ⇔ T
  • A ∨ F ⇔ A
  • A ∧ B ⇔ B ∧ A
  • A ∨ B ⇔ B ∨ A
  • A ∧ (B ∨ C) ⇔ (A ∧ B) ∨ (A ∧ C)
  • A ∨ (B ∧ C) ⇔ (A ∨ B) ∧ (A ∨ C)
  • ¬¬ A ⇔ A
  • ¬ (A ∧ B) ⇔ ¬ A ∨ ¬ B
  • ¬ (A ∨ B) ⇔ ¬ A ∧ ¬ B
  • (A ⇔ B) ⇔ (A ⇒ B ∧ B ⇒ A)
  • (A ⇒ B) ⇔ (¬ B ⇐ ¬ A)
  • (A ⇔ B) ⇔ (¬ B ⇔ ¬ A)
  • ∃ x. ∃ y.A ⇔ ∃ y. ∃ x.A
  • ∀ x. ∀ y.A ⇔ ∀ y. ∀ x.A
  • ¬∀ x.A je ⇔ ∃ x. ¬ A
  • ¬∃ x.A je ⇔ ∀ x. ¬ A
  • ∀ x . A ∧ B ⇔ [ ∀ x.A] ∧ [ ∀ x.B]
  • ∃ x . A ∨ B ⇔ [ ∃ x.A] ∨ [ ∃ x.B]
  • ∀ x . A ∨ B ⇔ [ ∀ x.A] ∨ B pokud B neobsahuje x
  • ∃ x . A ∧ B ⇔ [ ∃ x.A] ∧ B pokud B neobsahuje x
Pravidla ekvivalence:
  • A je ekvivalentní A
  • Pokud A je ekvivalentní B pak B je ekvivalentní A
  • Pokud A je ekvivalentní B, a B je ekvivalentní C pak A je ekvivalentní C

Implikace, ekvivalence

  • A ⇒ B je zkratka pro ¬ A ∨ B
  • A ⇔ B je zkratka pro A ⇒ B ∧ B ⇒ A

Z toho plyne:

  • A ⇒ B je ekvivalentni ¬ B ⇐ ¬ A
  • A ⇔ B je ekvivalentni ¬ B ⇔ ¬ A

Důkazní pravidla

Jak zjednodušovat to, co chceme dokázat?

  • A ∧ B: Nejdřív dokážeme A, pak B
  • A ∨ B: Předpokládáme ¬ A a dokážeme B
  • A ⇒ B: Předpokládáme A a dokážeme B.
  • ¬ A: Předpokládáme A a zkusíme najít rozpor. Rozpor: Situace kdy pro určité P, P i ¬ P jsou známé skutečnosti.

Jak produkovat nové známé věci?

  • A ∧ B: Usoudíme i A i B
  • A ∨ B: Píšeme nejdřív ”Případ A :”, předpokládáme A a dokončíme důkaz. Pak píšeme ”Případ B :”, předpokládáme B, a dokončíme důkaz.
  • A ⇒ B: Pokud známe A pak usoudíme B
  • ¬ A: Pokud už hledáme spor, pak místo ¬A dokazujeme A.

Jak zjednodušovat to, co chceme dokázat?

  • ∃ x . A: Vybereme (intuicí, kreativitou) term t, a dokážeme A[x ← t]
  • ∀ x . A: Vybereme novou konstantu a, píšeme ”Nechť a je libovolné ale pevné” a dokážeme A[x ← a]
  • A ∧ B: Nejdřív dokážeme A, pak B
  • A ∨ B: Předpokládáme ¬ A a dokážeme B
  • A ⇒ B: Předpokládáme A a dokážeme B.
  • ¬ A: Předpokládáme A a zkusíme najít rozpor

Jak produkovat nové známé věci?

  • ∃ x . A: Vybereme novou konstantu a, píšeme ”necht’ a je tak, že A[x ← a]”, a přiřadíme A[x ← a] do našeho seznamu známých skutečností.
  • ∀ x . A: Vybereme (intuicí, kreativitou) term t a usoudíme A[x ← t]
  • A ∧ B: Usoudíme A i B
  • A ∨ B: Píšeme nejdřív ”Případ A :”, předpokládáme A a dokončíme důkaz. Pak píšeme ”Případ B :”, předpokládáme B, a dokončíme důkaz.
  • A ⇒ B: Pokud známe A pak usoudíme B
  • ¬ A: Pokud už hledáme spor, pak místo ¬A dokazujeme A.

Správnost algoritmu

∀x ∀x' . [I (x) ∧ x' = f (x)] ⇒ O(x, x')

Axiomatizace seznamů

Funkční symboly

  • cons : T × L → L
  • first : L → T
  • rest : L → L
  • empty : → L

Axiomy (l ∈ L , x ∈ T ):

  • ∀ l, x . first(cons(x, l)) = x
  • ∀ l, x . rest(cons(x, l)) = l
  • ∀ l, x . l ≠ empty() ⇒ cons(first(l), rest(l)) = l
  • ∀ l, x . cons(x, l) ≠ empty()
  • Chování first(empty()), rest(empty()) není specifikováno.

Axiomatizace polí

Funkční symboly:

  • · [·] : A n × { 1, . . . , n } → T
  • write : A n × { 1, . . . , n } × T → A n

Axiomy (a, b ∈ A n, v ∈ T , i, j ∈ { 1, . . . , n } ):

  • ∀ a, v, i, j . i = j ⇒ write(a, i, v)[j] = v
  • ∀ a, v, i, j . i ≠ j ⇒ write(a, i, v)[j] = a[j]
  • ∀ a, b . [ ∀ i . a[i] = b[i]] ⇔ a = b

Axiomatizace přirozených čísel

Funkční symboly:

  • 0 : → N
  • 1 : → N
  • + : N × N → N
  • · : N × N → N

Axiomy (Peanova aritmetika)

  • ∀ x . x + 1 ≠ 0
  • ∀ x, y . x + 1 = y + 1 ⇒ x = y
  • ∀ x . x + 0 = x
  • ∀ x, y . x + (y + 1) = (x + y) + 1
  • ∀ x . x0 = 0
  • ∀ x, y x(y + 1) = xy + x
Indukce

Pro každou formuli F s přesně jednou volnou proměnnou x, další axiom

  • [ F[x ← 0] ∧ [∀ x . F ⇒ F [x ← x + 1] ] ] ⇒ ∀ x . F

Aserce

goto l

  • αi ⇒ αl

input v

  • αi ⇒ αi+1[v ← v0]

if P then

  • [[αi ∧ P] ⇒ αi+1] ∧ [[αi ∧ ¬ P] ⇒ αl ]

v ← t

@ α
  v1 ← t1; . . . ; vn ← tn
@ α'
  • α ⇒ α'[vn ← tn] . . . [v1 ← t1]

!!Pozor na posloupnost přiřazení!!

while

@ α
while P do
  @β
  . . .
  @β'
@ α'
  • [α ∧ P] ⇒ β
  • [α ∧ ¬ P] ⇒ α'
  • [β' ∧ P] ⇒ β
  • [β' ∧ ¬ P] ⇒ α'

for

@ α
for i ← l to u
  @β
  . . .
  @β'
@ α'
  • [α ∧ l ≤ u] ⇒ β[i ← l]
  • [α ∧ l > u] ⇒ α'
  • [β' ∧ i < u] ⇒ β[i ← i + 1]
  • β'[i ← u] ⇒ α'
school/fit/mifme.txt · Last modified: 2018-06-21 19:48 (external edit)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0