Created
September 5, 2024 19:06
-
-
Save falcondai/ede85822a5788a80a75db60065447732 to your computer and use it in GitHub Desktop.
Demo notebook associated the metamath primer presentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 58, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import metamathpy as mm\n", | |
| "import metamathpy.database as md\n", | |
| "import metamathpy.proof as mp\n", | |
| "from metamathpy.environment import Environment" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 59, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "set_db = md.parse('../set.mm/set.mm', last_rule='a1i')\n", | |
| "demo_db = md.parse('../set.mm/demo0.mm')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Proof of th1 in demo0.mm" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 60, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "['tt',\n", | |
| " 'tze',\n", | |
| " 'tpl',\n", | |
| " 'tt',\n", | |
| " 'weq',\n", | |
| " 'tt',\n", | |
| " 'tt',\n", | |
| " 'weq',\n", | |
| " 'tt',\n", | |
| " 'a2',\n", | |
| " 'tt',\n", | |
| " 'tze',\n", | |
| " 'tpl',\n", | |
| " 'tt',\n", | |
| " 'weq',\n", | |
| " 'tt',\n", | |
| " 'tze',\n", | |
| " 'tpl',\n", | |
| " 'tt',\n", | |
| " 'weq',\n", | |
| " 'tt',\n", | |
| " 'tt',\n", | |
| " 'weq',\n", | |
| " 'wim',\n", | |
| " 'tt',\n", | |
| " 'a2',\n", | |
| " 'tt',\n", | |
| " 'tze',\n", | |
| " 'tpl',\n", | |
| " 'tt',\n", | |
| " 'tt',\n", | |
| " 'a1',\n", | |
| " 'mp',\n", | |
| " 'mp']" | |
| ] | |
| }, | |
| "execution_count": 60, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "th1_proof = demo_db.rules['th1'].consequent.proof\n", | |
| "th1_proof" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 61, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "34" | |
| ] | |
| }, | |
| "execution_count": 61, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "len(th1_proof)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Example: verifying th1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 62, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "demo_env = Environment(demo_db)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 66, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(<metamathpy.database.Rule at 0x104acb1c0>, [], [])" | |
| ] | |
| }, | |
| "execution_count": 66, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "claim, proof, stack = demo_env.reset(demo_db.rules['th1'])\n", | |
| "claim, proof, stack" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 64, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "th1 $p |- t = t $.\n", | |
| "disjoint variable sets: set()\n", | |
| " tt $f term t $.\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print(claim)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 67, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "tt [ProofStep(conclusion=[tt] term t)]\n", | |
| "tze [ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tze] term 0)]\n", | |
| "tpl [ProofStep(conclusion=[tpl] term ( t + 0 ))]\n", | |
| "tt [ProofStep(conclusion=[tpl] term ( t + 0 )), ProofStep(conclusion=[tt] term t)]\n", | |
| "weq [ProofStep(conclusion=[weq] wff ( t + 0 ) = t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tt] term t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tt] term t)]\n", | |
| "weq [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[tt] term t)]\n", | |
| "a2 [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tt] term t)]\n", | |
| "tze [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tze] term 0)]\n", | |
| "tpl [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 ))]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 )), ProofStep(conclusion=[tt] term t)]\n", | |
| "weq [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tt] term t)]\n", | |
| "tze [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tze] term 0)]\n", | |
| "tpl [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 ))]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 )), ProofStep(conclusion=[tt] term t)]\n", | |
| "weq [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tt] term t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tt] term t)]\n", | |
| "weq [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t)]\n", | |
| "wim [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t ))]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[tt] term t)]\n", | |
| "a2 [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tt] term t)]\n", | |
| "tze [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tze] term 0)]\n", | |
| "tpl [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 ))]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 )), ProofStep(conclusion=[tt] term t)]\n", | |
| "tt [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[tpl] term ( t + 0 )), ProofStep(conclusion=[tt] term t), ProofStep(conclusion=[tt] term t)]\n", | |
| "a1 [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[wim] wff ( ( t + 0 ) = t -> t = t )), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[a1] |- ( ( t + 0 ) = t -> ( ( t + 0 ) = t -> t = t ) ))]\n", | |
| "mp [ProofStep(conclusion=[weq] wff ( t + 0 ) = t), ProofStep(conclusion=[weq] wff t = t), ProofStep(conclusion=[a2] |- ( t + 0 ) = t), ProofStep(conclusion=[mp] |- ( ( t + 0 ) = t -> t = t ))]\n", | |
| "mp [ProofStep(conclusion=[mp] |- t = t)]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# RPN and stack\n", | |
| "for thm in th1_proof:\n", | |
| " state, msg = demo_env.step(thm)\n", | |
| " claim, proof, stack = state\n", | |
| " print(thm, stack)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 68, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(('|-', 't', '=', 't'),\n", | |
| " Statement(label='th1', tag='$p', tokens=['|-', 't', '=', 't'], proof=['tt', 'tze', 'tpl', 'tt', 'weq', 'tt', 'tt', 'weq', 'tt', 'a2', 'tt', 'tze', 'tpl', 'tt', 'weq', 'tt', 'tze', 'tpl', 'tt', 'weq', 'tt', 'tt', 'weq', 'wim', 'tt', 'a2', 'tt', 'tze', 'tpl', 'tt', 'tt', 'a1', 'mp', 'mp']))" | |
| ] | |
| }, | |
| "execution_count": 68, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "stack[0].conclusion, claim.consequent" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 69, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 69, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "tuple(claim.consequent.tokens) == stack[0].conclusion" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Example: verifying a1i" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 70, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "set_env = Environment(set_db)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 71, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(<metamathpy.database.Rule at 0x104acb610>, [], [])" | |
| ] | |
| }, | |
| "execution_count": 71, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "claim, proof, stack = set_env.reset(set_db.rules['a1i'])\n", | |
| "claim, proof, stack" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 72, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "a1i $p |- ( ps -> ph ) $.\n", | |
| "disjoint variable sets: set()\n", | |
| " wph $f wff ph $.\n", | |
| " wps $f wff ps $.\n", | |
| " a1i.1 $e |- ph $.\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print(claim)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 73, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[ProofStep(conclusion=[wph] wff ph)]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wps] wff ps)]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wps] wff ps), ProofStep(conclusion=[wph] wff ph)]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wi] wff ( ps -> ph ))]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wi] wff ( ps -> ph )), ProofStep(conclusion=[a1i.1] |- ph)]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wi] wff ( ps -> ph )), ProofStep(conclusion=[a1i.1] |- ph), ProofStep(conclusion=[wph] wff ph)]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wi] wff ( ps -> ph )), ProofStep(conclusion=[a1i.1] |- ph), ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wps] wff ps)]\n", | |
| "[ProofStep(conclusion=[wph] wff ph), ProofStep(conclusion=[wi] wff ( ps -> ph )), ProofStep(conclusion=[a1i.1] |- ph), ProofStep(conclusion=[ax-1] |- ( ph -> ( ps -> ph ) ))]\n", | |
| "[ProofStep(conclusion=[ax-mp] |- ( ps -> ph ))]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# RPN and stack\n", | |
| "for thm in ('wph', 'wps', 'wph', 'wi', 'a1i.1', 'wph', 'wps', 'ax-1', 'ax-mp'):\n", | |
| " state, msg = set_env.step(thm)\n", | |
| " claim, proof, stack = state\n", | |
| " print(stack)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 74, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(('|-', '(', 'ps', '->', 'ph', ')'),\n", | |
| " Statement(label='a1i', tag='$p', tokens=['|-', '(', 'ps', '->', 'ph', ')'], proof=['(', 'wi', 'ax-1', 'ax-mp', ')', 'ABADCABEF']))" | |
| ] | |
| }, | |
| "execution_count": 74, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "stack[0].conclusion, claim.consequent" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 75, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 75, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "stack[0].conclusion == tuple(claim.consequent.tokens)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Representing proofs as trees" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 76, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[ <= ax-mp] |- ( ps -> ph ) {'ph': 'ph', 'ps': '( ps -> ph )'}\n", | |
| " [wph <= wph] wff ph {}\n", | |
| " [wps <= wi] wff ( ps -> ph ) {'ph': 'ps', 'ps': 'ph'}\n", | |
| " [wph <= wps] wff ps {}\n", | |
| " [wps <= wph] wff ph {}\n", | |
| " [min <= a1i.1] |- ph {}\n", | |
| " [maj <= ax-1] |- ( ph -> ( ps -> ph ) ) {'ph': 'ph', 'ps': 'ps'}\n", | |
| " [wph <= wph] wff ph {}\n", | |
| " [wps <= wps] wff ps {}\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "root, steps = mp.verify_proof(set_db, set_db.rules['a1i'])\n", | |
| "print(root.tree_string())" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "a1i_proof = root.normal_proof()\n", | |
| "a1i_proof" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 77, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[ <= mp] |- t = t {'P': '( t + 0 ) = t', 'Q': 't = t'}\n", | |
| " [wp <= weq] wff ( t + 0 ) = t {'t': '( t + 0 )', 'r': 't'}\n", | |
| " [tt <= tpl] term ( t + 0 ) {'t': 't', 'r': '0'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [tr <= tze] term 0 {}\n", | |
| " [tr <= tt] term t {}\n", | |
| " [wq <= weq] wff t = t {'t': 't', 'r': 't'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [tr <= tt] term t {}\n", | |
| " [min <= a2] |- ( t + 0 ) = t {'t': 't'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [maj <= mp] |- ( ( t + 0 ) = t -> t = t ) {'P': '( t + 0 ) = t', 'Q': '( ( t + 0 ) = t -> t = t )'}\n", | |
| " [wp <= weq] wff ( t + 0 ) = t {'t': '( t + 0 )', 'r': 't'}\n", | |
| " [tt <= tpl] term ( t + 0 ) {'t': 't', 'r': '0'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [tr <= tze] term 0 {}\n", | |
| " [tr <= tt] term t {}\n", | |
| " [wq <= wim] wff ( ( t + 0 ) = t -> t = t ) {'P': '( t + 0 ) = t', 'Q': 't = t'}\n", | |
| " [wp <= weq] wff ( t + 0 ) = t {'t': '( t + 0 )', 'r': 't'}\n", | |
| " [tt <= tpl] term ( t + 0 ) {'t': 't', 'r': '0'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [tr <= tze] term 0 {}\n", | |
| " [tr <= tt] term t {}\n", | |
| " [wq <= weq] wff t = t {'t': 't', 'r': 't'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [tr <= tt] term t {}\n", | |
| " [min <= a2] |- ( t + 0 ) = t {'t': 't'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [maj <= a1] |- ( ( t + 0 ) = t -> ( ( t + 0 ) = t -> t = t ) ) {'t': '( t + 0 )', 'r': 't', 's': 't'}\n", | |
| " [tt <= tpl] term ( t + 0 ) {'t': 't', 'r': '0'}\n", | |
| " [tt <= tt] term t {}\n", | |
| " [tr <= tze] term 0 {}\n", | |
| " [tr <= tt] term t {}\n", | |
| " [ts <= tt] term t {}\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "root, steps = mp.verify_proof(demo_db, demo_db.rules['th1'])\n", | |
| "print(root.tree_string())" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "lab", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.10.6" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment