A modular formal mathematics systems library, including Metamath
Project description
Formal mathematics package on python
Formal mathematics package on python.
Support a proof check system core equivalent to metamath
Install
pip install formalmath
Example use
Here is an example for propositional logic.
from formalmath.metamath import FormalSystem
# 1. Define constants in the system.
constants = ['wff', '->', '|-', '(', ')', '-.']
# 2. Define axioms.
axioms = {
'wi': {
'd': [],
't': {
'wph': 'wff ph',
'wps': 'wff ps'
},
'h': {},
'a': 'wff ( ph -> ps )'
},
'wn': {
'd': [],
't': {
'wph': 'wff ph'
},
'h': {},
'a': 'wff -. ph'
},
'ax-1': {
'd': [],
't': {
'wph': 'wff ph',
'wps': 'wff ps'
},
'h': {},
'a': '|- ( ph -> ( ps -> ph ) )'
},
'ax-2': {
'd': [],
't': {
'wph': 'wff ph',
'wps': 'wff ps',
'wch': 'wff ch'
},
'h': {},
'a': '|- ( ( ph -> ( ps -> ch ) ) -> ( ( ph -> ps ) -> ( ph -> ch ) ) )'
},
'ax-3': {
'd': [],
't': {
'wph': 'wff ph',
'wps': 'wff ps'
},
'h': {},
'a': '|- ( ( -. ph -> -. ps ) -> ( ps -> ph ) )'
},
'ax-mp': {
'd': [],
't': {
'wph': 'wff ph',
'wps': 'wff ps'
},
'h': {
'min': '|- ph',
'maj': '|- ( ph -> ps )'
},
'a': '|- ps'
}
}
# 3. Instantiate FormalSystem.
fs = FormalSystem(constants=constants, axioms=axioms, theorems={})
# 4. Write a new theorem for the system.
mp2 = {
'd': [],
't': {
'wph': 'wff ph',
'wps': 'wff ps',
'wch': 'wff ch'
},
'h': {
'mp2.1': '|- ph',
'mp2.2': '|- ps',
'mp2.3': '|- ( ph -> ( ps -> ch ) )'
},
'a': '|- ch',
'p':[
'wps',
'wch',
'mp2.2',
'wph',
'wps',
'wch',
'wi',
'mp2.1',
'mp2.3',
'ax-mp',
'ax-mp'
]
}
# 5. Check the proof steps of the previous theorem in the formal system.
trace = fs._proof_check(mp2, detailed=True)
for tr in trace:
print(tr)
The output will be
Step 1: push type assumption 'wps' -> 'wff ps'
Step 2: push type assumption 'wch' -> 'wff ch'
Step 3: push hypothesis 'mp2.2' -> '|- ps'
Step 4: push type assumption 'wph' -> 'wff ph'
Step 5: push type assumption 'wps' -> 'wff ps'
Step 6: push type assumption 'wch' -> 'wff ch'
Step 7: apply axiom 'wi', pop ['wff ps', 'wff ch']
match wph: type 'wff', var 'ph' -> 'ps'
match wps: type 'wff', var 'ps' -> 'ch'
conclude -> 'wff ( ps -> ch )' and push to stack
Step 8: push hypothesis 'mp2.1' -> '|- ph'
Step 9: push hypothesis 'mp2.3' -> '|- ( ph -> ( ps -> ch ) )'
Step 10: apply axiom 'ax-mp', pop ['wff ph', 'wff ( ps -> ch )', '|- ph', '|- ( ph -> ( ps -> ch ) )']
match wph: type 'wff', var 'ph' -> 'ph'
match wps: type 'wff', var 'ps' -> '( ps -> ch )'
hypothesis min matches '|- ph'
hypothesis maj matches '|- ( ph -> ( ps -> ch ) )'
conclude -> '|- ( ps -> ch )' and push to stack
Step 11: apply axiom 'ax-mp', pop ['wff ps', 'wff ch', '|- ps', '|- ( ps -> ch )']
match wph: type 'wff', var 'ph' -> 'ps'
match wps: type 'wff', var 'ps' -> 'ch'
hypothesis min matches '|- ps'
hypothesis maj matches '|- ( ps -> ch )'
conclude -> '|- ch' and push to stack
Proof successfully concludes with assertion '|- ch'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
formalmath-0.1.3.tar.gz
(13.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file formalmath-0.1.3.tar.gz.
File metadata
- Download URL: formalmath-0.1.3.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5294153efdf981522b76a883d61975a1445702138f90b1e590bb93a5769ab072
|
|
| MD5 |
6d1fdae6ff059bb80ffa3fc5c3e58005
|
|
| BLAKE2b-256 |
9a0426198349507821081016286c8247ce91059a9e360b6c86012455b7fe9b36
|
File details
Details for the file formalmath-0.1.3-py3-none-any.whl.
File metadata
- Download URL: formalmath-0.1.3-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ce079d38e5d036e19fea40b03889fab5e0656034b7774f758d797418e436eb2
|
|
| MD5 |
bc948fd43f261aedfe50ae474d1b9eac
|
|
| BLAKE2b-256 |
84fb4333a3cfee0ca47815b31d7b9e6c84a4765872c9366135bdbb948337ca23
|