{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/fadoss/maude2lean/maude2lean.schema.json", "title": "Input settings for the Maude to Lean translator", "description": "Input settings for the Maude to Lean translator", "type": "object", "properties": { "description": { "description": "Free-text description of the settings", "type": "string" }, "source": { "description": "Path to the input Maude file (or list of paths)", "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }], "type": "string" }, "module": { "description": "Name of the Maude module to be transformed (or where to evaluate the metamodule)", "type": "string" }, "metamodule": { "description": "Metarepresentation of the module to be transformed", "type": "string" }, "sort-renaming": { "description": "Renaming for sort names", "type": "object", "items": { "type": "string" } }, "kind-renaming": { "description": "Renaming for kind names (any sort in the kind can be used as key)", "type": "object", "items": { "type": "string" } }, "op-renaming": { "description": "Renaming for operator names", "type": "object", "items": { "type": "string" } }, "prefer-quotes": { "description": "Whether to eliminate symbols in operator names or prefer quotes to maintain them", "type": "boolean", "default": false }, "use-notation": { "description": "Relations where infix notation is used instead of standard alphanumeric names", "type": "array", "default": [], "uniqueItems": true, "items": { "type": "string", "enum": ["has_sort", "eqa", "eqe", "rw_one", "rw_star"] } }, "declare-notation": { "description": "Relations where infix notation is declared (even if not used, use-notation implies this)", "type": "array", "default": [], "uniqueItems": true, "items": { "type": "string", "enum": ["has_sort", "eqa", "eqe", "rw_one", "rw_star"] } }, "with-ctor-predicate": { "description": "Whether to define a ctor_only predicate that holds only on constructor terms", "type": "boolean", "default": true }, "with-error-free-opt": { "description": "Whether to optimize error-free kinds with a most general sort by removing sort membership premises for it", "type": "boolean", "default": false }, "with-lemmas": { "description": "Whether to include simple lemmas derived from the base specification", "type": "boolean", "default": true }, "with-aliases": { "description": "Whether to define aliases for the constructors of the inductive relations", "type": "boolean", "default": true }, "with-repr": { "description": "Whether to define a pretty printing function for the terms", "type": "boolean", "default": true }, "with-rules": { "description": "Whether to include rewrite rules and rewriting relations", "type": "boolean", "default": true }, "with-frozen": { "description": "Whether the frozen attribute of operators is obeyed by skipping argument rewriting axioms", "type": "boolean", "default": true }, "with-simp": { "description": "Whether to label statements with the simp, symm, trans, and congr attribute", "type": "boolean", "default": true }, "with-axiom-simp": { "description": "Whether to include structural axioms in the simplifier (only useful if with-simp)", "type": "boolean", "default": false }, "with-sort2kind": { "description": "Whether to define the 'kind' function from sorts to their corresponding kind types", "type": "boolean", "default": true }, "with-derived-as-consts": { "description": "Whether operators that are not constructors are translated as constants outside the inductive datatype", "type": "boolean", "default": false }, "with-derived-as-defs": { "description": "Whether compatible non-constructor operators are translated to Lean definitions outside the inductive datatype", "type": "boolean", "default": false }, "with-native-bool": { "description": "Replace Maude's Bool sort by Lean's bool", "type": "boolean", "default": false }, "split-eqe": { "description": "Split the application of an equation on top as a subrelation of eqe for the given kinds", "type": "array", "items": { "type": "string" }, "default": [] }, "has-sort-symbol": { "description": "Infix notation for the sort membership relation", "type": "string", "default": "⊳" }, "eqa-symbol": { "description": "Infix notation for equality module axioms", "type": "string", "default": "=A" }, "eqe-symbol": { "description": "Infix notation for equality modulo equations", "type": "string", "default": "=E" }, "rw-one-symbol": { "description": "Infix notation for the one-step rewriting relation", "type": "string", "default": "=>1" }, "rw-star-symbol": { "description": "Infix notation for the reflexive and transitive closure of the rewriting relation", "type": "string", "default": "=>*" }, "outermost-namespace": { "description": "Name of the outermost namespace (leave empty to omit that namespace)", "type": "string", "default": "Maude" }, "with-original-stmt": { "description": "Include the original statement as a comment along with its translation", "type": "boolean", "default": false }, "lean-version": { "description": "Lean version to generate code for", "type": "integer", "enum": [3, 4], "default": 3 } }, "required": ["source"] }