Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
- | Автор: Игорь Бронштейн. | + | Автор: Василий Мерзляков. |
- | | + | |
- | Исходный dot-файл:
| + | |
- | <pre>
| + | |
- | digraph PVSTree {
| + | |
- | "node0" [
| + | |
- | label = "{ |[1] FORALL (i : nat) : (i \> 7) IMPLIES EXIST (t : nat, f : nat) : i = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node1" [
| + | |
- | label = "(induct \"i\")"
| + | |
- | ]
| + | |
- | "node0" -> "node1"
| + | |
- | "node2" [
| + | |
- | label = "{ |[1] (0 \> 7) IMPLIES EXIST (t : nat, f : nat) : 0 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node1" -> "node2" [label = "базис индукции"]
| + | |
- | "node3" [
| + | |
- | label = "(flatten 1)"
| + | |
- | ]
| + | |
- | "node2" -> "node3"
| + | |
- | "node4" [
| + | |
- | label = "{[-1] 0 \> 7|[1] EXIST (t : nat, f : nat) : 0 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node3" -> "node4"
| + | |
- | "node7" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node4" -> "node7"
| + | |
- | "node8" [
| + | |
- | label = "{ |[1] FORALL (j : nat) :\n(j \> 7) IMPLIES EXIST (t : nat, f : nat) : j = 3 * t + 5 * f\nIMPLIES\n(j + 1 \> 7) IMPLIES EXIST (t : nat, f : nat) : j + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node1" -> "node8" [label = "индуктивный переход"]
| + | |
- | "node9" [
| + | |
- | label = "(skolem! 1)"
| + | |
- | ]
| + | |
- | "node8" -> "node9"
| + | |
- | "node10" [
| + | |
- | label = "{ |[1] (j!1 \> 7) IMPLIES EXIST (t : nat, f : nat) : j!1 = 3 * t + 5 * f\nIMPLIES\n(j!1 + 1 \> 7) IMPLIES EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node9" -> "node10"
| + | |
- | "node11" [
| + | |
- | label = "(flatten 1)"
| + | |
- | ]
| + | |
- | "node10" -> "node11"
| + | |
- | "node12" [
| + | |
- | label = "{[-1] (j!1 \> 7) IMPLIES EXIST (t : nat, f : nat) : j!1 = 3 * t + 5 * f|[1] (j!1 + 1 \> 7) IMPLIES EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node11" -> "node12"
| + | |
- | "node13" [
| + | |
- | label = "(flatten 1)"
| + | |
- | ]
| + | |
- | "node12" -> "node13"
| + | |
- | "node14" [
| + | |
- | label = "{[-1] j!1 + 1 \> 7\n[-2] (j!1 \> 7) IMPLIES EXIST (t : nat, f : nat) : j!1 = 3 * t + 5 * f|[1] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node13" -> "node14"
| + | |
- | "node15" [
| + | |
- | label = "(split -2)"
| + | |
- | ]
| + | |
- | "node14" -> "node15"
| + | |
- | "node16" [
| + | |
- | label = "{[-1] EXIST (t : nat, f : nat) : j!1 = 3 * t + 5 * f\n[-2] j!1 + 1 \> 7|[1] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node15" -> "node16" [label = "следствие в антецеденты"]
| + | |
- | "node17" [
| + | |
- | label = "(skolem! -1)"
| + | |
- | ]
| + | |
- | "node16" -> "node17"
| + | |
- | "node18" [
| + | |
- | label = "{[-1] j!1 = 3 * t!1 + 5 * f!1\n[-2] j!1 + 1 \> 7|[1] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node17" -> "node18"
| + | |
- | "node19" [
| + | |
- | label = "(case \"f!1 = 0\")"
| + | |
- | ]
| + | |
- | "node18" -> "node19"
| + | |
- | "node20" [
| + | |
- | label = "{[-1] f!1 = 0\n[-2] j!1 = 3 * t!1 + 5 * f!1\n[-3] j!1 + 1 \> 7|[1] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node19" -> "node20"
| + | |
- | "node21" [
| + | |
- | label = "(inst 1 \"t!1 - 3\" \"2\")"
| + | |
- | ]
| + | |
- | "node20" -> "node21"
| + | |
- | "node22" [
| + | |
- | label = "{[-1] f!1 = 0\n[-2] j!1 = 3 * t!1 + 5 * f!1\n[-3] j!1 + 1 \> 7|[1] j!1 + 1 = 3 * (t!1 - 3) + 5 * 2}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node21" -> "node22"
| + | |
- | "node23" [
| + | |
- | label = "(replace -1)"
| + | |
- | ]
| + | |
- | "node22" -> "node23"
| + | |
- | "node24" [
| + | |
- | label = "{[-1] j!1 = 3 * t!1 + 5 * 0\n[-2] j!1 + 1 \> 7|[1] j!1 + 1 = 3 * (t!1 - 3) + 5 * 2}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node23" -> "node24"
| + | |
- | "node25" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node24" -> "node25"
| + | |
- | "node26" [
| + | |
- | label = "{[-1] f!1 = 0\n[-2] j!1 = 3 * t!1 + 5 * f!1\n[-3] j!1 + 1 \> 7|[1] t!1 - 3 \>= 0}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node21" -> "node26"
| + | |
- | "node27" [
| + | |
- | label = "(replace -1)"
| + | |
- | ]
| + | |
- | "node26" -> "node27"
| + | |
- | "node28" [
| + | |
- | label = "{[-1] j!1 = 3 * t!1 + 5 * 0\n[-2] j!1 + 1 \> 7|[1] t!1 - 3 \>= 0}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node27" -> "node28"
| + | |
- | "node29" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node28" -> "node29"
| + | |
- | "node30" [
| + | |
- | label = "{[-1] j!1 = 3 * t!1 + 5 * f!1\n[-2] j!1 + 1 \> 7|[1] f!1 = 0\n[2] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node19" -> "node30"
| + | |
- | "node31" [
| + | |
- | label = "(inst 2 \"t!1 + 2\" \"f!1 - 1\")"
| + | |
- | ]
| + | |
- | "node30" -> "node31"
| + | |
- | "node32" [
| + | |
- | label = "{[-1] j!1 = 3 * t!1 + 5 * f!1\n[-2] j!1 + 1 \> 7|[1] j!1 + 1 = 3 * (t!1 + 2) + 5 * (f!1 - 1)\n[2] f!1 = 0}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node31" -> "node32"
| + | |
- | "node33" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node32" -> "node33"
| + | |
- | "node34" [
| + | |
- | label = "{[-1] j!1 = 3 * t!1 + 5 * f!1\n[-2] j!1 + 1 \> 7|[1] f!1 - 1 \>= 0\n[2] f!1 = 0}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node31" -> "node34"
| + | |
- | "node35" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node34" -> "node35"
| + | |
- | "node36" [
| + | |
- | label = "{[-1] j!1 + 1 \> 7|[1] j!1 \> 7\n[2] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node15" -> "node36" [label = "посылку в консеквенты"]
| + | |
- | "node37" [
| + | |
- | label = "(case \"j!1 = 7\")"
| + | |
- | ]
| + | |
- | "node36" -> "node37"
| + | |
- | "node38" [
| + | |
- | label = "{[-1] j!1 = 7\n[-2] j!1 + 1 \> 7|[1] j!1 \> 7\n[2] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node37" -> "node38"
| + | |
- | "node39" [
| + | |
- | label = "(inst 2 \"1\" \"1\")"
| + | |
- | ]
| + | |
- | "node38" -> "node39"
| + | |
- | "node40" [
| + | |
- | label = "{[-1] j!1 = 7\n[-2] j!1 + 1 \> 7|[1] j!1 \> 7\n[2] j!1 + 1 = 3 * 1 + 5 * 1}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node39" -> "node40"
| + | |
- | "node41" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node40" -> "node41"
| + | |
- | "node42" [
| + | |
- | label = "{[-1] j!1 + 1 \> 7|[1] j!1 = 7\n[2] j!1 \> 7\n[3] EXIST (t : nat, f : nat) : j!1 + 1 = 3 * t + 5 * f}"
| + | |
- | shape = "record"
| + | |
- | ]
| + | |
- | "node37" -> "node42"
| + | |
- | "node43" [
| + | |
- | label = "(assert)"
| + | |
- | style = "filled"
| + | |
- | fillcolor = "green"
| + | |
- | ]
| + | |
- | "node42" -> "node43"
| + | |
- | }
| + | |
- | </pre>
| + | |