Recent Releases of maude
maude - Python packages v1.5.0
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.9, 3.10, 3.11, 3.12, and 3.13).
- This version is built against Maude 3.5.
- Breaking:
Term.vu_narrowdoes no longer takes thefold,filter, anddelayarguments, but a singleflagsargument. These flags can a meaningful bitwise disjunction of some ofFOLD,VFOLD,FILTER,DELAY, orPATH. - New methods
getMostGeneralStatesandgetFrontierStateson the iterator returned byvu_narrowthat stand for theshow most general statesandshow frontier statescommands. - New method
Module.vu_narrowfor narrowing with multiple initial states, which are given as a list in its first argument.Term.vu_narrowstill exists andt.vu_narrow(...)is equivalent tom.vu_narrow([t], ...)for any termtin a modulem.
- SWIG
Published by github-actions[bot] about 1 year ago
maude - Python packages v1.4.0
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.8, 3.9, 3.10, 3.11 and 3.12).
- This version is built against Maude 3.4.
- The new
=>#search type of Maude 3.4 can be used asmaude.BRANCHin thesearchcommand. - Regression:
Term.argumentsrecovers its default behavior before 1.3, i.e. it normalizes terms before iterating over its arguments.Term.arguments(False)can be used to iterate over the unnormalized term, but the arguments are fragile objects that will be destroyed as soon as the whole term is destroyed. pyproject.toml-based build using scikit-build-core instead of scikit-build.- New string constant
maude.MAUDE_VERSIONwith the version of Maude against the library is built. In the binaries of this release it takes the value3.4+smc.
- SWIG
Published by github-actions[bot] almost 2 years ago
maude - Python packages v1.3.0
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.8, 3.9, 3.10, 3.11 and 3.12).
- This version is built against Maude alpha154 (see changes here).
Term.arguments()does no longer normalize the term modulo axioms before iterating over its arguments. For example, the arguments of(1 + 2) + 3were previously obtained as[3, 1 + 2], but now[1 + 2, 3]is given. The new methodTerm.normalize(False)before iterating can be used to reproduce the previous behavior, andTerm.normalize(True)to obtain[1, 2, 3].- New experimental methods
Module.toLatex,View.toLatex,Term.toLatex, andStrategyExpression.toLatexto obtain the LaTeX representation of a term. - Fixed some problems when
maude.initis called twice.
- SWIG
Published by github-actions[bot] about 2 years ago
maude - Python packages v1.2.3
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.7, 3.8, 3.9, 3.10, and 3.11).
- This version is built against Maude 3.3.1, whose main new feature is object-oriented modules. However, since they are essentially syntactic sugar on top of system modules, there are no related changes in this release of the library.
Equationhas two new methodsisOwiseandisVariantto check the corresponding attributes.
- SWIG
Published by github-actions[bot] almost 3 years ago
maude - Python packages v1.2.2
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.7, 3.8, 3.9, 3.10, and 3.11).
- The new version is built against Maude 3.2.2. However, that is a bug-fix release and no new features have been added.
- Fixes a bug introduced in 1.2.1 that caused a segmentation fault when
findSortand other related methods do not succeed. - Unlike in 1.2.1 and in the operator attribute, the argument indices of
Symbol.getFrozennow start from zero since this is more natural in the target programming language. - New methods
getOpHooksandgetTermHooksinSymbolthat return a dictionary with the operator and term bindings of a special operator, respectively. This is only available in Python for the moment and the interface may change in the future. - The Python bindings do not longer include some wrappers over the C++ structures like
IntVectorandTermIntPair, which are not useful and only increase the package size.
- SWIG
Published by github-actions[bot] about 3 years ago
maude - Python packages v1.2.1
The following Python packages are not yet uploaded to PyPI. .whl files can be directly installed with pip for the matching Python version (3.7, 3.8, 3.9, and 3.10).
Bug fixes
- Overwritten modules (i.e. replaced by another module of the same name) were not internally released in Maude when its wrapper object becomes unreachable (reported in #3).
Improvements
- New method
Symbol.hasAttrto check some attributes of the operator like associativity (OP_ASSOC), commutativity (OP_COMM), whether it is iterable (OP_ITER), idempotent (OP_IDEM), has left identity (OP_LEFT_ID), right identity (OP_RIGHT_ID), memoizationOP_MEMO(with memoization), or is special (i.e. primitive,OP_SPECIAL). It takes as argument one of the global constants enumerated above. - New methods
getIdentity,getFrozen,getStrategy,getPrec,getFormat, andgetIdHooksofSymbolto obtain the identity constant, thefrozenattribute, the reduction strategy, the syntactic precedence, the format specification, and the id-hooks associated to that symbol. - New method
Term.getIterExponentto get the exponent ofiteroperators (suggested in #2).
- SWIG
Published by github-actions[bot] about 3 years ago
maude - Python packages v1.2.0
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.6, 3.7, 3.8, 3.9, and 3.10).
Improvements
- All module module elements (
Sort,Kind,Equation,Rule, ...) are now hashable and comparable for equality. This allows using them in data structures like dictionaries and sets in Python. - The methods
parseTermandparseStrategyofModulecan now receive an optional additional argument with a collection of variables to be declared before parsing. This provides the functionality of the second argument ofmetaParse(see §17.6.13 of the Maude manual).
- SWIG
Published by github-actions[bot] over 3 years ago
maude - Python packages v1.1.2
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.6, 3.7, 3.8, 3.9, and 3.10).
Small improvements
- Two new methods have been added to the
Kindclass:nrMaximalSortto obtain the number of maximal sorts (according to the subsort relation) anderrorFreeto know whether error terms are contained in the kind.
Bug fixes
- The methods
getConditionandisNonexecwere missing in theMembershipAxiomclass. - Custom special operators with
id-hook SpecialHubSymbol (name)forgot thenamewhen being imported.
- SWIG
Published by github-actions[bot] almost 4 years ago
maude - Python packages v1.1.1
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.6, 3.7, 3.8, 3.9, and 3.10).
Bug fixes
Termobjects produced bySymbol.makeTermwere not properly garbage-collected.- The Python packages now include the
process.maudeandtime.maudefiles of the Maude distribution (known problem in 1.1.0).
- SWIG
Published by github-actions[bot] almost 4 years ago
maude - Python packages v1.1.0
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.6, 3.7, 3.8, 3.9, and 3.10).
Update to Maude 3.2.1
- The bindings are now linked to Maude 3.2.1, which includes several improvements and bug fixes.
- New global functions
setAllowDirfor setting whether access to the file system through the directory API is allowed, andsetAssocUnifDepthto set the depth multiplier for associative unification. - The
Term.vu_narrowmethod takes two new optional argumentsfilteranddelaythat correspond to the homonym options of the interpreter command.
Other improvements
- New method
Kind.hashfor hashingKindobjects. In Python, they can now be used in dictionaries, sets, etc.
Known problems
- The packages distributed through PyPI lack the files
process.maudeandtime.maudethat are part of Maude 3.2.1, unlike those that can be downloaded below. However, the missing files can be automatically replaced with thefix-missing.pyscript below, or manually by copying them to the package installation path or anywhere else inside the Maude library path.
- SWIG
Published by github-actions[bot] about 4 years ago
maude - Python packages v1.0.1
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (3.6, 3.7, 3.8, 3.9, and 3.10).
Bug fixes
- Using the
getLinemessage of the stream and file API caused a segmentation fault. - The underlying Maude implementation (
libmaude.so) contained a bug related to the probabilistic strategy language.
- SWIG
Published by github-actions[bot] about 4 years ago
maude - Python packages v1.0
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (2.7, 3.6, 3.7, 3.8, 3.9, and 3.10).
New features
- New method
Term.applyto apply rules with an interface similar tometaXapply. The term is applied any rule with the given label (or any executable rule ifNoneis given instead) according to an optional initial substitution and optional depth bounds. The result is an iterator over the results of the rule application (not reduced, although this may change in the future), the matching substitutions, the matching contexts, and the applied rules. Matching contexts are provided as functions that return the original term with the matched subterm replaced by its argument. Term.matchcan now be used to match anywhere and not only on top. This method is now given two additional argumentsminDepthandmaxDepthto arbitrary limit matching by depth. By default,minDepthis 0 andmaxDepthis -1 or 0 depending on the value ofwithExtension. The constantmaude.UNBOUNDEDcan be used formaxDepth.- New methods
Term.isVariableandTerm.getVarNameto check whether a term is a variable and to get its name (getVarNamewill return null if the term is not a variable). - New method
Symbol.isAssocto check whether a symbol is associative. Term.searchreceives a new keyword argumentstrategyto control the search using a strategy (experimental feature).
Improvements
- Update to Maude alpha136.
- New global function
setRandomSeedto set the random generator seed at any time. - Condition fragments obtained from functions in Python are objects of the specific subclass (
EqualityCondition,RewriteCondition, ...) instead of the genericConditionFragment.
Bug fixes
- The condition argument passed to
Term.matchandTerm.searchwas destroyed after the completion of these operations, yielding dangling pointers at the user side. Moreover, if the condition belonged to a module statement, the module would be corrupted. - Missing
hasConditionandgetConditionmethods inStrategyDefinition. - Partial substitutions (where some variables in the term are not defined by the substitution) caused the library to crash.
Module.upStrategyreturned malformed metarepresentations in some cases.
Non-backward compatible changes
- Iterating through the result of
Term.matchin Python provides a pair ofSubstitutionandContextinstead of only aSubstitution. - Assignments in
Substitutioncan no longer be accessed by index. Its methodvarhas been removed, andvaluenow receives a variable instead of an index.
- SWIG
Published by github-actions[bot] over 4 years ago
maude - Python packages v0.7
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (2.7, 3.6, 3.7, 3.8 and 3.9).
Update to Maude alpha133
The Maude version used by the library is now Maude alpha133. Since the bugs fixed since Maude 3.1 may affect the potential users of the library, it has been packaged with the latest release despite not being stable. However, using the stable version or a different compatible alpha version is still possible, by replacing the libmaude.so (Linux), libmaude.dylib (macOS) or libmaude.dll (Windows) and the .maude files in the package directory with that version.
New features
- New method
getMetadatato obtain the free textmetadataattribute onMembershipAxiom,Equation,Rule,RewriteStrategy,StrategyDefinitionand the declarations of aSymbol. The quotation marks surrounding this text are only trimed in Python, Lua and Java for the moment. - New method
getLineNumberto obtain the line number information as printed by Maude on module statements.
Improvements
- In previous versions, the methods
findSortandfindSymbolofModuleexpected all special characters in the name to be escaped by backquotes, which is now optional. - Object to string conversions are now reentrant.
Bug fixes
- Bug fixes in the methods
rewrite,frewrite,erewrite,srewriteofTerm, and inStrategyRewriteGraph. - Fixed several memory leaks. ⚠ Warning: memory errors are more likely now when are objects used outside their lifetimes (this mainly affects substitutions returned by searches, which should not survive its iterator).
- SWIG
Published by github-actions[bot] almost 5 years ago
maude - Python packages v0.6
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can also be directly installed with pip for the matching Python version (2.7, 3.6, 3.7, 3.8 and 3.9).
Update to Maude 3.1
The Maude version used by the library is now Maude 3.1, including some new features and bug fixes.
- The new command
variant matchhas been mapped toModule.variant_match, andfiltered variant unifyandirredundant unifycan be selected with additional Boolean arguments toModule.variant_unifyandModule.unify. - Access to the external objects of the
FILEandPROCESSmodules can be enabled and disabled with theallowFilesandallowProcessesfunctions. The release packages for Windows do not support processes.
New features
- New method
Module.upStrategyto obtain the metarepresentation of a strategy expression. - Terms, symbols and sorts are hashable with
Term.hash,Symbol.hashandSort.hash. In Python, thehashbuiltin function can be used too. - Keyword arguments can now be used in methods having more than one default argument like
Term.match,get_variants,search,vu_narrow, andModule.variant_unify.
Changes
- In the previous version, interrupts were handled by Maude by default (the
handleInterruptsargument ofmaude.initwas true by omission). This may print misleading messages attributing to Maude errors that are caused by a misuse of the library or by foreign code, and typing Ctrl+C will terminate the program. The current version recovers as default the behavior in all other previous versions, where the signal handlers set by the target language are kept, with some improvements in the case of Python. Typing Ctrl+C when running Maude code will try to abort gracefully and raise aKeyboardInterruptexception. Signals handlers set with the signal package will be effectively executed, if they are set before callingmaude.init.
Bug fixes
- Terms and other objects can be safely compared in Python with
Noneusing the==operator. - Error or kind sorts
[s]were incorrectly printed ass.
- SWIG
Published by github-actions[bot] over 5 years ago
maude - Python packages v0.5
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can be directly installed too with pip for the matching Python version (2.7, 3.6, 3.7 or 3.8).
Non-backward compatible changes
Module.downModuleis moved tomaude.downModule, since no module object is required for this operation.
New features
- New metalevel-related functions
Module.downTermandModule.upTermto convert back and forth between metarepresented and object-level entities. ModelCheckResultincludes a new fieldnrBuchiStateswith the number of states of the Büchi automaton for the negated LTL property.RewriteGraphandStrategyRewriteGraphhave a new methodgetNrRewritesto obtain the total number of rewrites spent in extending the rewrite graph.- Equality testing method
equalforSort,Kind,SymbolandTerm. In Python, the==operator can be used as a synomyn ofequal, and<=asSort.leqfor subsort inclusion. - Terms representing integers and floating-point numbers can be converted to their corresponding types of the external programming language using the methods
Term.toIntandTerm.toFloat. Integers not fitting in the host type are truncated, and other terms are converted to zero. In Python, the builtinfloatandintfunctions can be used. - New method
Term.checkto check SMT formulae. Its result is one of the stringssat,unsatorundecided, like in the homonym command, orNoneif the term is not a SMT one. - New method
Term.prettyPrintfor a more controlled pretty printing of terms, using themaude.PRINT_*flags.
Bug fixes
- The strategy passed to
StrategyRewriteGraphis copied to avoid illegal access when the graph is destroyed.
Experimental features
- New feature to define in the external language the behavior of selected Maude operators against equational and rule rewriting. This is achieved using Maude special operators, which are marked by the
specialattribute and whose behavior is defined in the C++ code of the interpreter, instead of equationally or with rules. Here, external languages may extend theHookclass with a customrunmethod that get executed when the special symbol is reduced or rewritten.
- SWIG
Published by github-actions[bot] over 5 years ago
maude - Python packages v0.4
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can be directly installed too with pip for the matching Python version (2.7, 3.6, 3.7 or 3.8).
Non-backward compatible changes
StateTransitionGraphis renamed toRewriteGraphandStrategyTranstionGraphtoStrategyRewriteGraph.
New features
- Unification via
Module.unifyand variant unification viaModule.variant_unify. Both methods receive the unification problem as a list of pairs of terms. - Variant generation with
Term.get_variants. - Narrowing search using
Term.vu_narrow. Substitutionis extended with two new methods:instantiate(term)to instantiate terms, andfind(variableName, sort=None)to find the value of a variable in a substitution by its name and sort.- Syntactic sugar for building terms using
Symbol.makeTerm:f.makeTerm([t1, t2])can be written asf(t1, t2).
Bug fixes
- A bug in the
modelCheckmethods that may cause bad results and crashes. - A mismatched
libmaude.soversion in the 0.3 build may cause unexpected behavior and crashes.
- SWIG
Published by github-actions[bot] almost 6 years ago
maude - Python packages v0.3
The following Python packages have been uploaded to PyPI, and they can be installed with pip install --upgrade maude.
.whl files can be directly installed too with pip for the matching Python version (2.7, 3.6, 3.7 or 3.8).
Non-backward compatible changes
- Maude-internal vectors returned by observer methods (
Module.getSorts...) are now read-only. Term.matchreceives a Python list of condition fragments instead of an internal vector.Symbol.domainComponentis renamed toSymbol.domainKind.
New features
- Documentation.
- Terms can be constructed and destructured:
Term.argumentsto iterate their arguments,Symbol.makeTermto build terms,Module.findSortandfindSymbolto find symbols and sorts in a module. - Access to the Maude LTL model checker and its extension for strategy-controlled systems:
modelCheckmethod inStateTransitionGraphandStrategyTransitionGraph. Module.downStrategyandModule.downModuleto get module and strategy expression objects from their metarepresentations.- Additional methods in some other classes: operator declarations in
Symbol, sorts inKind... - The random seed for the
RANDOMmodule can now be set in themaude.initfunction.
Bug fixes
- Internal errors in
Term.searchandStrategyTransitionGraph. Sort.leqonly worked for symbols in the same kind.
- SWIG
Published by github-actions[bot] almost 6 years ago
maude - Python packages v0.2
The following Python packages have been uploaded to PyPI, and they can be installed with pip install maude.
.whl files can be directly installed too with pip for the matching Python version (2.7, 3.6, 3.7 or 3.8).
- SWIG
Published by github-actions[bot] almost 6 years ago
maude - Auxiliary build files
This release now only contains an auxiliary file required to build the maude package in CentOS and Windows.
- SWIG
Published by ningit about 6 years ago