Solving using properties and rules