':param goal: Input expression to prove
:type goal: sem.Expression
:param assumptions: Input expressions to use as assumptions in
the proof.
:type assumptions: list(sem.Expression)'

def __init__(self, goal=None, assumptions=None):

    self._goal = goal
    if (not assumptions):
        self._assumptions = []
    else:
        self._assumptions = list(assumptions)
    self._result = None
    'A    holder    for    the    result,    to    prevent    unnecessary    re-proving'
