 }
 
 
+// MARK: - Logicial Conjunction
+
 /// A goal that succeeds when all of the subgoals succeed.
 public func all(_ goals: [Goal]) -> Goal {
     return { state in

    return all(lhs, rhs)
}

/// A goal that succeeds when any of the subgoals succeeds.
///
/// This can multiple alternative solutions.

/// Represented as a function that takes a produces a stream of states that are
/// compatible with the goal.
public typealias Goal = (State) -> AnyIterator<State>


// MARK: - Equality

/// A goal that's satisfied when a variable equals a value.
public func == <Value: Equatable>(variable: Variable<Value>, value: Value) -> Goal {
