Matching mathematical expressions
We encounter mathematical operations all the time. Logic programming is a very efficient way of comparing expressions and finding out unknown values. Let's see how to do that.
Create a new Python file and import the following packages:
from logpy import run, var, fact import logpy.assoccomm as la
Define a couple of mathematical operations:
# Define mathematical operations add = 'addition' mul = 'multiplication'
Both addition and multiplication are commutative operations. Let's specify that:
# Declare that these operations are commutative # using the facts system fact(la.commutative, mul) fact(la.commutative, add) fact(la.associative, mul) fact(la.associative, add)
Let's define some variables:
# Define some variables a, b, c = var('a'), var('b'), var('c')
Consider the following expression:
expression_orig = 3 x (-2) + (1 + 2 x 3) x (-1)
Let's generate this expression with masked variables. The first expression would be:
expression1 = (1 + 2 x a) x...