package domain

/**
  * Abstract domain for primitive values.
  */
trait PrimitiveDomain extends AbstractDomain {

  def toElement(n: Long): Element

  def toElement(n: Double): Element

  def neg(e: Element): Element

  def sum(e1: Element, e2: Element): Element

  def div(e1: Element, e2: Element): Element

  def mult(e1: Element, e2: Element): Element

  def rem(e1: Element, e2: Element): Element
}
