maude = MaudeSystem()maude-magic
Refs: - pexpect - nbdev - IPython magics - Export examples - See persistent Shells.ipynb - Myst Markdown
%%bash for package in pexpect nbdev jupyterlab-quarto do
pip list | grep “^\(package *" > /dev/null && echo "\)package found” || pip install $package done # This must be done in terminal # nbdev_install_quarto
The Maude Shell class
MaudeShell
def MaudeShell(
timeout:int=3
):
Controls maude execution, executing commands and print responses. Preserve sessions between different cell executions.
TimeoutException
def TimeoutException(
):
Exception raised if time-out.
Creating maude shell:
Stdin-load an incomplete module:
Load a module:
Show module:
Make a reduction:
Warning:
The Maude System class:
MaudeSystem
def MaudeSystem(
timeout:int=3
):
Encapsulates maude commands as object methods.
Intantiation:
Firs, instantiate a MaudeSystem instance:
Load:
maude.load('SIMPLE-NAT')Get a result in a tuple:
maude._getTupleResult('red','s s zero',MaudeSystem.red_reo){'sort': 'Nat', 'value': 's s zero'}
Test red command:
maude.red('s s zero'){'sort': 'Nat', 'value': 's s zero'}
Test for type and value:
maude.red('s s zero','Nat')
try:
maude.red('s s zero','NzNat','s s zero')
except:
pass
else:
raise Exception()Test parse command:
maude.parse('s s zero'){'sort': 'Nat', 'value': 's s zero'}
Test LOAD
Test READ
%%maude fmod SIMPLE-NAT is sort Nat . op zero : -> Nat . op s_ : Nat -> Nat . op + : Nat Nat -> Nat . vars M N : Nat . eq zero + N = N . eq s N + M = s (N + M) . endfm
Test SHOW
print(maude.show_module())show module .
fmod SIMPLE-NAT is
sort Nat .
op zero : -> Nat .
op s_ : Nat -> Nat .
op _+_ : Nat Nat -> Nat .
vars M N : Nat .
eq zero + N = N .
eq s N + M = s (N + M) .
endfm
Test REDUCE
maude.red('s s zero','Nat','s s zero'){'sort': 'Nat', 'value': 's s zero'}
maude.red('s s zero','Nat','s s zero',echo=True)red s s zero .
reduce in SIMPLE-NAT : s s zero .
rewrites: 0 in 0ms cpu (0ms real) (~ rewrites/second)
result Nat: s s zero
{'sort': 'Nat', 'value': 's s zero'}
Destroying object closes session:
The maude Magic Class
load_ipython_extension
def load_ipython_extension(
ipython
):
Any module file that define a function named load_ipython_extension can be loaded via %load_ext module.path or be configured to be autoloaded by IPython at startup time.
MaudeMagics
def MaudeMagics(
shell:NoneType=None
):
Adapts Maude Shell to a IPython Magic class.Uses a owned Maude Shell. Cell magics are used to execute maude commands. Line magics are used for command line options.
Usage
Now, MaudeMagic uses an owned MaudeInterpreter to run maude commands:
Test maude Magic
fmod PEANO-NAT is
sort Nat .
op zero : -> Nat .
op s_ : Nat -> Nat .
op _+_ : Nat Nat -> Nat .
eq zero + N:Nat = N:Nat .
eq s N:Nat + N':Nat = N:Nat + s N':Nat .
endfmfmod PEANO-NAT is
> sort Nat .
> op zero : -> Nat .
> op s_ : Nat -> Nat .
> op _+_ : Nat Nat -> Nat .
>
> eq zero + N:Nat = N:Nat .
> eq s N:Nat + N':Nat = N:Nat + s N':Nat .
> endfm
maude.red('s zero + s s zero','Nat'){'sort': 'Nat', 'value': 's s s zero'}
maude.trace=True
maude.red('s zero + s s zero','Nat')Request:
'red s zero + s s zero .\n'
Response:
'red s zero + s s zero .\n\rreduce in PEANO-NAT : s zero + s s zero .\r\nrewrites: 2 in 0ms cpu (0ms real) (~ rewrites/second)\r\nresult Nat: s s s zero\r\n\rMaude> '
Line: 'red s zero + s s zero .'
Line: 'reduce in PEANO-NAT : s zero + s s zero .'
Line: 'rewrites: 2 in 0ms cpu (0ms real) (~ rewrites/second)'
Line: 'result Nat: s s s zero'
{'sort': 'Nat', 'value': 's s s zero'}
maude.trace=False
maude.parse('s zero + s s zero','Nat'){'sort': 'Nat', 'value': 's zero + s s zero'}
Cell input
fmod RESOURCE is sort Resource . endfmfmod RESOURCE is sort Resource . endfm
fmod IRI is
pr RESOURCE .
sort IRI .
*** Is a Biyection
op denotes : IRI -> Resource .
op referent : IRI -> Resource .
endfmfmod IRI is
> pr RESOURCE .
> sort IRI .
> *** Is a Biyection
> op denotes : IRI -> Resource .
> op referent : IRI -> Resource .
> endfm
fmod LITERAL-SORT is
ex RESOURCE .
sort Literal .
op denotes : Literal -> Resource .
endfmfmod LITERAL-SORT is
> ex RESOURCE .
> sort Literal .
> op denotes : Literal -> Resource .
> endfm
fmod BLANK-NODE is sort BlankNode . endfmfmod BLANK-NODE is sort BlankNode . endfm
fmod SUBJECT is
protecting IRI . protecting BLANK-NODE .
sort Subject .
subsorts IRI BlankNode < Subject .
endfmfmod SUBJECT is
> protecting IRI . protecting BLANK-NODE .
> sort Subject .
> subsorts IRI BlankNode < Subject .
> endfm
fmod PREDICATE is protecting IRI . endfm> fmod PREDICATE is protecting IRI . endfm