package prolog.ast.logic

import prolog.Answers
import prolog.Substitutions
import prolog.ast.terms.Atom
import prolog.ast.terms.Operator

abstract class LogicOperator(
    symbol: Atom,
    leftOperand: LogicOperand? = null,
    rightOperand: LogicOperand
) : Operator(symbol, leftOperand, rightOperand), Satisfiable {
    constructor(symbol: String, leftOperand: LogicOperand? = null, rightOperand: LogicOperand) :
            this(Atom(symbol), leftOperand, rightOperand)

    abstract override fun satisfy(subs: Substitutions): Answers
}
