LogicProgrammingScopeWithUnificator

Bare mixin wiring a Unificator into a :dsl-core scope: extends BaseLogicProgrammingScope with UnificationAware (exposing the unificator backing this scope) and Unificator itself, so Unificator.mgu, Unificator.match, Unificator.unify, Unificator.merge and Unificator.context are callable directly on the scope, without going through unificator explicitly. Implementations are expected to forward these to unificator (e.g. via Unificator by unificator, as LogicProgrammingScopeImpl does) rather than implement unification logic of their own.

This interface only makes the plain, it.unibo.tuprolog.core.Term-based Unificator operations available; LogicProgrammingScopeWithUnification builds the DSL's Any-accepting/infix sugar (mguWith, matches, unifyWith, ...) on top of it.

Type Parameters

S

the concrete, self-referential scope type (see BaseLogicProgrammingScope) that copy returns.

Inheritors

Properties

Link copied to clipboard
open val _: Var
Link copied to clipboard
abstract val context: Substitution
Link copied to clipboard
abstract val emptyBlock: EmptyBlock
Link copied to clipboard
Link copied to clipboard
abstract val fail: Truth
Link copied to clipboard
Link copied to clipboard
abstract val unificator: Unificator
Link copied to clipboard
abstract val variables: Map<String, Var>

Functions

Link copied to clipboard
abstract fun anonymous(): Var
Link copied to clipboard
abstract fun atomOf(value: Char): Atom
abstract fun atomOf(value: String): Atom
Link copied to clipboard
abstract fun blockOf(terms: Iterable<Term>): Block
abstract fun blockOf(terms: Sequence<Term>): Block
abstract fun blockOf(vararg terms: Term): Block
Link copied to clipboard
abstract fun clauseOf(head: Struct?, vararg body: Term): Clause
Link copied to clipboard
abstract fun consOf(head: Term, tail: Term): Cons
Link copied to clipboard
abstract operator fun contains(variable: Var): Boolean
abstract operator fun contains(variable: String): Boolean
Link copied to clipboard
abstract fun copy(unificator: Unificator): S

Creates a copy of this scope, backed by the same it.unibo.tuprolog.core.Scope, using unificator instead of the current one.

Link copied to clipboard
abstract fun directiveOf(body1: Term, vararg body: Term): Directive
Link copied to clipboard
abstract fun factOf(head: Struct): Fact
Link copied to clipboard
abstract operator fun get(variable: String): Var?
Link copied to clipboard
abstract fun indicatorOf(name: Term, arity: Term): Indicator
abstract fun indicatorOf(name: String, arity: Int): Indicator
Link copied to clipboard
abstract fun intOf(value: Byte): Integer
abstract fun intOf(value: Int): Integer
abstract fun intOf(value: Long): Integer
abstract fun intOf(value: Short): Integer
abstract fun intOf(value: String): Integer
abstract fun intOf(value: BigInteger): Integer
abstract fun intOf(value: String, radix: Int): Integer
Link copied to clipboard
abstract fun logicListFrom(terms: Iterable<Term>, last: Term?): List
abstract fun logicListFrom(terms: Sequence<Term>, last: Term?): List
abstract fun logicListFrom(vararg terms: Term, last: Term?): List
Link copied to clipboard
abstract fun logicListOf(terms: Iterable<Term>): List
abstract fun logicListOf(terms: Sequence<Term>): List
abstract fun logicListOf(vararg terms: Term): List
Link copied to clipboard
open fun match(term1: Term, term2: Term): Boolean
open fun match(term1: Term, term2: Term, occurCheckEnabled: Boolean): Boolean
Link copied to clipboard
open fun merge(substitution1: Substitution, substitution2: Substitution): Substitution
abstract fun merge(substitution1: Substitution, substitution2: Substitution, occurCheckEnabled: Boolean): Substitution
Link copied to clipboard
open fun mgu(term1: Term, term2: Term): Substitution
abstract fun mgu(term1: Term, term2: Term, occurCheckEnabled: Boolean): Substitution
Link copied to clipboard
abstract fun newScope(): S
Link copied to clipboard
abstract fun numOf(value: Byte): Integer
abstract fun numOf(value: Double): Real
abstract fun numOf(value: Float): Real
abstract fun numOf(value: Int): Integer
abstract fun numOf(value: Long): Integer
abstract fun numOf(value: Number): Numeric
abstract fun numOf(value: Short): Integer
abstract fun numOf(value: String): Numeric
abstract fun numOf(value: BigDecimal): Real
abstract fun numOf(value: BigInteger): Integer
Link copied to clipboard
abstract fun realOf(value: Double): Real
abstract fun realOf(value: Float): Real
abstract fun realOf(value: String): Real
abstract fun realOf(value: BigDecimal): Real
Link copied to clipboard
abstract fun ruleOf(head: Struct, body1: Term, vararg body: Term): Rule
Link copied to clipboard
abstract fun structOf(functor: String, args: Iterable<Term>): Struct
abstract fun structOf(functor: String, args: List<Term>): Struct
abstract fun structOf(functor: String, args: Sequence<Term>): Struct
abstract fun structOf(functor: String, vararg args: Term): Struct
Link copied to clipboard
abstract fun substitutionOf(assignments: Iterable<Pair<Var, Term>>): Substitution
abstract fun substitutionOf(assignments: Sequence<Pair<Var, Term>>): Substitution
abstract fun substitutionOf(vararg assignments: Pair<String, Term>): Substitution
Link copied to clipboard
open fun <T : Term> Any.toSpecificSubTypeOfTerm(type: KClass<T>, converter: (Struct) -> T): T
Link copied to clipboard
open fun Any.toTerm(): Term
Link copied to clipboard
abstract fun truthOf(value: Boolean): Truth
Link copied to clipboard
abstract fun tupleOf(terms: Iterable<Term>): Tuple
abstract fun tupleOf(terms: Sequence<Term>): Tuple
abstract fun tupleOf(vararg terms: Term): Tuple
Link copied to clipboard
abstract fun unifierOf(assignments: Iterable<Pair<Var, Term>>): Substitution.Unifier
abstract fun unifierOf(assignments: Sequence<Pair<Var, Term>>): Substitution.Unifier
abstract fun unifierOf(vararg assignments: Pair<String, Term>): Substitution.Unifier
Link copied to clipboard
open fun unify(term1: Term, term2: Term): Term?
open fun unify(term1: Term, term2: Term, occurCheckEnabled: Boolean): Term?
Link copied to clipboard
abstract fun varOf(name: Char): Var
abstract fun varOf(name: String): Var
Link copied to clipboard
abstract fun whatever(): Var
Link copied to clipboard
abstract fun where(lambda: Scope.() -> Unit): Scope
Link copied to clipboard
abstract fun <R> with(lambda: Scope.() -> R): R