maude-help AT lists.siebelschool.illinois.edu
Subject: Maude-help mailing list
List archive
- From: Steven Eker <eker AT csl.sri.com>
- To: Patrick Browne <patrick.browne AT dit.ie>
- Cc: maude-help AT cs.uiuc.edu
- Subject: Re: [Maude-help] Propositions and Equations
- Date: Mon, 13 Jan 2014 12:30:22 -0800
- List-archive: <http://lists.cs.uiuc.edu/pipermail/maude-help/>
- List-id: <maude-help.cs.uiuc.edu>
A several points: (1) BOOL converts all expressions in to polynomial form (in the Boolean ring with "+" as "xor" and "*" and "and") and then uses the well known confluent and terminating AC term rewriting system to put this in a unique normal form, which might be true or false, but in general is an xor of products over the unknowns. This is sufficient for deciding equalities between Boolean expressions, assuming the unknowns are distinct. (2) Equality between Boolean expressions (i.e. equations and == tests) is logically two-way implication. (3) Adding defining equations for unknowns such as: eq ee = (e implies ((not i) and (not m))) . is fine since ee is not otherwise known, and thus there can be no critical pair. (4) Adding new pattern in the lhs of an equation is asking for trouble: eq not i = a . Here the lhs forms a critical pair with the lhs of: eq not A = A xor true . from the BOOL-OPS module in the prelude, and it is undefined whether "not i" becomes "a" or "i xor true"; i.e. the term rewriting system is no longer confluent, which breaks the basic contract for equations to behave correctly. (5) It's possible to use the Maude LTL sat-solver to check if a formula is universally false or has a model (i.e. a satisfying assignment). If the negation of a formula phi is universally false, then phi must be universally true. load model-checker fmod SUPER-SAT is pr SAT-SOLVER . ops a w i m p e aw na nw np ee : -> Formula . eq aw = (a /\ w) -> p . eq na = ~ a -> i . eq nw = ~ w -> m . eq np = ~ p . eq ee = e -> (~ i /\ ~ m) . endfm red satSolve((aw /\ na /\ nw /\ np /\ ee) -> ~ e) . red satSolve(~((aw /\ na /\ nw /\ np /\ ee) -> ~ e)) . red satSolve((aw /\ na /\ nw /\ np /\ ee) -> e) . red satSolve(~((aw /\ na /\ nw /\ np /\ ee) -> e)) . Again it is a bad idea to write lhs patterns involving the defined symbols of LTL since these will likely conflict with (i.e. have critical pairs with) the defining equations in model-checker.maude Steven On 1/11/14 7:50 AM, Patrick Browne wrote:
|
- [Maude-help] Propositions and Equations, Patrick Browne, 01/11/2014
- Re: [Maude-help] Propositions and Equations, Steven Eker, 01/13/2014
- Re: [Maude-help] Propositions and Equations, Patrick Browne, 01/14/2014
- Re: [Maude-help] Propositions and Equations, Steven Eker, 01/14/2014
- Re: [Maude-help] Propositions and Equations, Patrick Browne, 01/14/2014
- Re: [Maude-help] Propositions and Equations, Steven Eker, 01/13/2014
Archive powered by MHonArc 2.6.16.