LogicProgrammingScopeImpl

class LogicProgrammingScopeImpl(val scope: Scope, val termificator: Termificator, val variablesProvider: VariablesProvider, val unificator: Unificator, val theoryFactory: TheoryFactory) : LogicProgrammingScope, VariablesProvider, Unificator, TheoryFactory

Default, stateless implementation of LogicProgrammingScope: forwards VariablesProvider, Unificator and TheoryFactory operations to variablesProvider, unificator and theoryFactory respectively (via Kotlin delegation), and every other scope operation up its supertypes' default implementations. Obtained through LogicProgrammingScope.of/LogicProgrammingScope.empty rather than constructed directly in typical usage.

Throws

if scope is not the same object as both termificator's and variablesProvider's scope, or if unificator is not equal to theoryFactory's.

Constructors

Link copied to clipboard
constructor(scope: Scope, termificator: Termificator, variablesProvider: VariablesProvider, unificator: Unificator, theoryFactory: TheoryFactory)

Properties

Link copied to clipboard
open override val _: Var
Link copied to clipboard
open override val A: Var
Link copied to clipboard
Link copied to clipboard
open override val B: Var
Link copied to clipboard
open override val C: Var
Link copied to clipboard
open override val context: Substitution
Link copied to clipboard
open val cut: Atom
Link copied to clipboard
open override val D: Var
Link copied to clipboard
open override val E: Var
Link copied to clipboard
open override val emptyBlock: EmptyBlock
Link copied to clipboard
open override val emptyLogicList: EmptyList
Link copied to clipboard
open override val F: Var
Link copied to clipboard
open override val fail: Truth
Link copied to clipboard
open override val G: Var
Link copied to clipboard
open override val H: Var
Link copied to clipboard
open val halt: Atom
Link copied to clipboard
open override val I: Var
Link copied to clipboard
open override val J: Var
Link copied to clipboard
open override val K: Var
Link copied to clipboard
open override val L: Var
Link copied to clipboard
open override val M: Var
Link copied to clipboard
open override val N: Var
Link copied to clipboard
open val nl: Atom
Link copied to clipboard
open override val O: Var
Link copied to clipboard
open override val P: Var
Link copied to clipboard
open override val Q: Var
Link copied to clipboard
open override val R: Var
Link copied to clipboard
open val repeat: Atom
Link copied to clipboard
open override val S: Var
Link copied to clipboard
open override val scope: Scope
Link copied to clipboard
open override val T: Var
Link copied to clipboard
open override val termificator: Termificator
Link copied to clipboard
open override val theoryFactory: TheoryFactory

The TheoryFactory this scope's TheoryFactory implementation (and theory/mutableTheory) forward to.

Link copied to clipboard
open override val U: Var
Link copied to clipboard
open override val unificator: Unificator
Link copied to clipboard
open override val V: Var
Link copied to clipboard
open override val variables: Map<String, Var>
Link copied to clipboard
Link copied to clipboard
open override val W: Var
Link copied to clipboard
open override val X: Var
Link copied to clipboard
open override val Y: Var
Link copied to clipboard
open override val Z: Var

Functions

Link copied to clipboard
open fun abolish(indicator: Any): Struct
Link copied to clipboard
open infix fun Any.and(other: Any): Struct
Link copied to clipboard
open override fun anonymous(): Var
Link copied to clipboard
open fun append(left: Any, right: Any, result: Any): Struct
Link copied to clipboard
open fun arg(index: Any, compound: Any, argument: Any): Struct
Link copied to clipboard
open infix fun Any.arithEq(right: Any): Struct
Link copied to clipboard
open infix fun Any.arithNeq(right: Any): Struct
Link copied to clipboard
open fun assert(clause: Any): Struct
Link copied to clipboard
open fun asserta(clause: Any): Struct
Link copied to clipboard
open fun assertz(clause: Any): Struct
Link copied to clipboard
open fun at_end_of_stream(alias: Any): Struct
Link copied to clipboard
open fun atom(atom: Any): Struct
Link copied to clipboard
open fun atom_chars(atom: Any, chars: Any): Struct
Link copied to clipboard
open fun atom_codes(atom: Any, codes: Any): Struct
Link copied to clipboard
open fun atom_concat(first: Any, second: Any, result: Any): Struct
Link copied to clipboard
open fun atom_length(atom: Any, length: Any): Struct
Link copied to clipboard
open fun atomic(atomic: Any): Struct
Link copied to clipboard
open override fun atomOf(value: Char): Atom
open override fun atomOf(value: String): Atom
Link copied to clipboard
open fun bagof(template: Any, goal: Any, bag: Any): Struct
Link copied to clipboard
open fun between(min: Any, max: Any, number: Any): Struct
Link copied to clipboard
open override fun blockOf(terms: Iterable<Term>): Block
open override fun blockOf(terms: Sequence<Term>): Block
open override fun blockOf(vararg terms: Term): Block
open fun blockOf(vararg terms: Any): Block
Link copied to clipboard
open fun call(goal: Any): Struct
Link copied to clipboard
open fun callable(goal: Any): Struct
Link copied to clipboard
open fun catch(goal: Any, error: Any, continuation: Any): Struct
Link copied to clipboard
open fun char_code(char: Any, code: Any): Struct
Link copied to clipboard
open fun clause(head: Any, body: Any): Struct
open fun clause(function: LogicProgrammingScope.() -> Any): Clause
Link copied to clipboard
open override fun clauseOf(head: Struct?, vararg body: Term): Clause
Link copied to clipboard
open fun compound(struct: Any): Struct
Link copied to clipboard
open override fun consOf(head: Term, tail: Term): Cons
open fun consOf(head: Any, tail: Any): Cons
Link copied to clipboard
open fun consult(url: Any): Struct
Link copied to clipboard
open operator override fun contains(variable: Var): Boolean
open operator override fun contains(variable: String): Boolean
open operator fun Substitution.contains(term: Any): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun copy(scope: Scope): LogicProgrammingScope

Copies this scope onto scope, propagating it to termificator and variablesProvider as well.

open override fun copy(unificator: Unificator): LogicProgrammingScope

Copies this scope onto unificator, propagating it to theoryFactory as well.

Link copied to clipboard
open fun copy_term(term: Any, copy: Any): Struct
Link copied to clipboard
open fun current_flag(name: Any, value: Any): Struct
Link copied to clipboard
open fun current_op(precedence: Any, specifier: Any, functor: Any): Struct
Link copied to clipboard
open fun current_prolog_flag(name: Any, value: Any): Struct
Link copied to clipboard
open fun directive(function: LogicProgrammingScope.() -> Any): Directive
Link copied to clipboard
open override fun directiveOf(body1: Term, vararg body: Term): Directive
open fun directiveOf(term: Any, vararg terms: Any): Directive
Link copied to clipboard
open operator fun Term.div(other: Any): Indicator
open operator fun Boolean.div(other: Any): Struct
open operator fun Char.div(other: Any): Struct
open operator fun Number.div(other: Any): Struct
open operator fun String.div(other: Any): Struct
Link copied to clipboard
open fun dynamic(indicator: Any): Struct
Link copied to clipboard
open override fun emptyMutableTheory(): MutableTheory
open override fun emptyMutableTheory(unificator: Unificator): MutableTheory
Link copied to clipboard
open override fun emptyTheory(): Theory
open override fun emptyTheory(unificator: Unificator): Theory
Link copied to clipboard
open infix fun Any.eq(right: Any): Struct
Link copied to clipboard
open infix fun Any.equalsTo(other: Any): Struct
Link copied to clipboard
open fun fact(function: LogicProgrammingScope.() -> Any): Fact
Link copied to clipboard
open override fun factOf(head: Struct): Fact
open fun factOf(term: Any): Fact
Link copied to clipboard
open fun findall(template: Any, goal: Any, bag: Any): Struct
Link copied to clipboard
open fun float(number: Any): Struct
Link copied to clipboard
open fun functor(struct: Any, functor: Any, arity: Any): Struct
Link copied to clipboard
open operator override fun get(variable: String): Var?
open operator fun Substitution.get(term: Any): Term?
Link copied to clipboard
open operator override fun getValue(thisRef: Any?, property: KProperty<*>): Var
Link copied to clipboard
open infix fun Any.greaterThan(other: Any): Struct
Link copied to clipboard
open infix fun Any.greaterThanOrEqualsTo(other: Any): Struct
Link copied to clipboard
open fun ground(term: Any): Struct
Link copied to clipboard
open infix fun Any.id(right: Any): Struct
Link copied to clipboard
open infix fun Any.if(other: Any): Rule
open fun Any.if(vararg other: Any): Rule
Link copied to clipboard
open infix fun Any.impliedBy(other: Any): Rule
open fun Any.impliedBy(vararg other: Any): Rule
Link copied to clipboard
open fun include(url: Any): Struct
Link copied to clipboard
open override fun indicatorOf(name: Term, arity: Term): Indicator
open override fun indicatorOf(name: String, arity: Int): Indicator
Link copied to clipboard
open fun initialization(goal: Any): Struct
Link copied to clipboard
open infix fun Any.intDiv(other: Any): Struct
Link copied to clipboard
open fun integer(number: Any): Struct
Link copied to clipboard
open override fun intOf(value: Byte): Integer
open override fun intOf(value: Int): Integer
open override fun intOf(value: Long): Integer
open override fun intOf(value: Short): Integer
open override fun intOf(value: String): Integer
open override fun intOf(value: BigInteger): Integer
open override fun intOf(value: String, radix: Int): Integer
Link copied to clipboard
open operator fun String.invoke(term: Any, vararg terms: Any): Struct
Link copied to clipboard
open infix fun Any.is(other: Any): Struct
Link copied to clipboard
open fun load(url: Any): Struct
Link copied to clipboard
open fun logicList(vararg items: Any, tail: Any?): List
Link copied to clipboard
open override fun logicListFrom(terms: Iterable<Term>, last: Term?): List
open override fun logicListFrom(terms: Sequence<Term>, last: Term?): List
open override fun logicListFrom(vararg terms: Term, last: Term?): List
Link copied to clipboard
open override fun logicListOf(terms: Iterable<Term>): List
open override fun logicListOf(terms: Sequence<Term>): List
open override fun logicListOf(vararg terms: Term): List
open fun logicListOf(vararg terms: Any): List
Link copied to clipboard
open infix fun Any.lowerThan(other: Any): Struct
Link copied to clipboard
open infix fun Any.lowerThanOrEqualsTo(other: Any): Struct
Link copied to clipboard
open fun match(term1: Any, term2: Any, occurCheckEnabled: Boolean): Boolean
open override fun match(term1: Term, term2: Term): Boolean
open override fun match(term1: Term, term2: Term, occurCheckEnabled: Boolean): Boolean
Link copied to clipboard
open infix fun Any.matches(other: Any): Boolean
Link copied to clipboard
open fun member(item: Any, list: Any): Struct
Link copied to clipboard
open override fun merge(substitution1: Substitution, substitution2: Substitution): Substitution
open override fun merge(substitution1: Substitution, substitution2: Substitution, occurCheckEnabled: Boolean): Substitution
Link copied to clipboard
open fun mgu(term1: Any, term2: Any, occurCheckEnabled: Boolean): Substitution
open override fun mgu(term1: Term, term2: Term): Substitution
open override fun mgu(term1: Term, term2: Term, occurCheckEnabled: Boolean): Substitution
Link copied to clipboard
open infix fun Any.mguWith(other: Any): Substitution
Link copied to clipboard
open operator fun Term.minus(other: Any): Struct
open operator fun Boolean.minus(other: Any): Struct
open operator fun Char.minus(other: Any): Struct
open operator fun Number.minus(other: Any): Struct
open operator fun String.minus(other: Any): Struct
Link copied to clipboard
open fun mutableTheory(vararg clauseFunctions: LogicProgrammingScope.() -> Any): MutableTheory

Builds a MutableTheory out of clauseFunctions, one per clause. Otherwise identical to theory, down to how each lambda is run and its result converted via toClause; delegates to TheoryFactory.mutableTheoryOf (via theoryFactory).

Link copied to clipboard
open fun mutableTheoryOf(clauses: Iterable<Clause>, vararg otherClauses: Iterable<Clause>): MutableTheory
open fun mutableTheoryOf(clauses: Sequence<Clause>, vararg otherClauses: Sequence<Clause>): MutableTheory

Overload of TheoryFactory.mutableTheoryOf concatenating clauses and otherClauses into one MutableTheory.

open override fun mutableTheoryOf(clauses: Iterable<Clause>): MutableTheory
open override fun mutableTheoryOf(clauses: Sequence<Clause>): MutableTheory
open override fun mutableTheoryOf(vararg clauses: Clause): MutableTheory
open override fun mutableTheoryOf(unificator: Unificator, vararg clauses: Clause): MutableTheory
open override fun mutableTheoryOf(clauses: Iterable<Clause>, unificator: Unificator): MutableTheory
open override fun mutableTheoryOf(clauses: Sequence<Clause>, unificator: Unificator): MutableTheory
Link copied to clipboard
open fun naf(goal: Any): Struct
Link copied to clipboard
open fun natural(number: Any): Struct
Link copied to clipboard
open infix fun Any.neq(right: Any): Struct
Link copied to clipboard
open override fun newScope(): LogicProgrammingScope

Creates a fresh LogicProgrammingScope, backed by a brand-new, empty Scope; see copy.

Link copied to clipboard
open infix fun Any.nid(right: Any): Struct
Link copied to clipboard
open infix fun Any.nonGreaterThan(other: Any): Struct
Link copied to clipboard
open infix fun Any.nonLowerThan(other: Any): Struct
Link copied to clipboard
open fun nonvar(number: Any): Struct
Link copied to clipboard
open fun not(goal: Any): Struct
Link copied to clipboard
open infix fun Any.notEqualsTo(other: Any): Struct
Link copied to clipboard
open fun number(number: Any): Struct
Link copied to clipboard
open fun number_chars(first: Any, second: Any): Struct
Link copied to clipboard
open fun number_codes(first: Any, second: Any): Struct
Link copied to clipboard
open override fun numOf(value: Byte): Integer
open override fun numOf(value: Double): Real
open override fun numOf(value: Float): Real
open override fun numOf(value: Int): Integer
open override fun numOf(value: Long): Integer
open override fun numOf(value: Number): Numeric
open override fun numOf(value: Short): Integer
open override fun numOf(value: String): Numeric
open override fun numOf(value: BigDecimal): Real
open override fun numOf(value: BigInteger): Integer
Link copied to clipboard
open fun op(precedence: Any, specifier: Any, functor: Any): Struct
Link copied to clipboard
open infix fun Any.or(other: Any): Struct
Link copied to clipboard
open operator fun Term.plus(other: Any): Struct
open operator fun Boolean.plus(other: Any): Struct
open operator fun Char.plus(other: Any): Struct
open operator fun Number.plus(other: Any): Struct
Link copied to clipboard
open infix fun Any.pow(other: Any): Struct
Link copied to clipboard
open override fun realOf(value: Double): Real
open override fun realOf(value: Float): Real
open override fun realOf(value: String): Real
open override fun realOf(value: BigDecimal): Real
Link copied to clipboard
open infix operator fun Term.rem(other: Any): Struct
open infix operator fun Boolean.rem(other: Any): Struct
open infix operator fun Char.rem(other: Any): Struct
open infix operator fun Number.rem(other: Any): Struct
open infix operator fun String.rem(other: Any): Struct
Link copied to clipboard
open fun retract(clause: Any): Struct
Link copied to clipboard
open fun retractall(clause: Any): Struct
Link copied to clipboard
open fun rule(function: LogicProgrammingScope.() -> Any): Rule
Link copied to clipboard
open override fun ruleOf(head: Struct, body1: Term, vararg body: Term): Rule
Link copied to clipboard
open fun <R> scope(function: LogicProgrammingScope.() -> R): R
Link copied to clipboard
open fun set_flag(name: Any, value: Any): Struct
Link copied to clipboard
open fun set_prolog_flag(name: Any, value: Any): Struct
Link copied to clipboard
open fun setof(template: Any, goal: Any, bag: Any): Struct
Link copied to clipboard
open fun solve(goal: Any): Struct
Link copied to clipboard
open fun static(indicator: Any): Struct
Link copied to clipboard
open override fun structOf(functor: String, args: Iterable<Term>): Struct
open override fun structOf(functor: String, args: List<Term>): Struct
open override fun structOf(functor: String, args: Sequence<Term>): Struct
open override fun structOf(functor: String, vararg args: Term): Struct
open fun structOf(functor: String, vararg args: Any): Struct
Link copied to clipboard
open fun sub_atom(atom: Any, before: Any, length: Any, after: Any, sub_atom: Any): Struct
Link copied to clipboard
open override fun substitutionOf(assignments: Iterable<Pair<Var, Term>>): Substitution
open override fun substitutionOf(assignments: Sequence<Pair<Var, Term>>): Substitution
open override fun substitutionOf(vararg assignments: Pair<String, Term>): Substitution
Link copied to clipboard
open infix fun Any.sup(other: Any): Struct
Link copied to clipboard
open infix fun Any.then(other: Any): Struct
Link copied to clipboard
open fun theory(vararg clauseFunctions: LogicProgrammingScope.() -> Any): Theory

Builds a Theory out of clauseFunctions, one per clause: each lambda runs with a fresh newScope as its receiver, and its result is coerced into a Clause via toClause — so it may return an already-built Clause (from it.unibo.tuprolog.core.Scope.factOf/it.unibo.tuprolog.core.Scope.ruleOf/ it.unibo.tuprolog.core.Scope.directiveOf) or a plain it.unibo.tuprolog.core.Struct, as shown in this interface's example. Delegates to TheoryFactory.theoryOf (via theoryFactory) for the actual construction.

Link copied to clipboard
open fun theoryOf(clauses: Iterable<Clause>, vararg otherClauses: Iterable<Clause>): Theory
open fun theoryOf(clauses: Sequence<Clause>, vararg otherClauses: Sequence<Clause>): Theory

Overload of TheoryFactory.theoryOf concatenating clauses and otherClauses into a single Theory.

open override fun theoryOf(clauses: Iterable<Clause>): Theory
open override fun theoryOf(clauses: Sequence<Clause>): Theory
open override fun theoryOf(vararg clauses: Clause): Theory
open override fun theoryOf(unificator: Unificator, vararg clauses: Clause): Theory
open override fun theoryOf(clauses: Iterable<Clause>, unificator: Unificator): Theory
open override fun theoryOf(clauses: Sequence<Clause>, unificator: Unificator): Theory
Link copied to clipboard
open fun throw(error: Any): Struct
Link copied to clipboard
open operator fun Term.times(other: Any): Struct
open operator fun Boolean.times(other: Any): Struct
open operator fun Char.times(other: Any): Struct
open operator fun Number.times(other: Any): Struct
open operator fun String.times(other: Any): Struct
Link copied to clipboard
open infix fun Var.to(termObject: Any): Substitution.Unifier
open infix fun String.to(termObject: Any): Substitution.Unifier
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
open override fun truthOf(value: Boolean): Truth
Link copied to clipboard
open override fun tupleOf(terms: Iterable<Term>): Tuple
open override fun tupleOf(terms: Sequence<Term>): Tuple
open override fun tupleOf(vararg terms: Term): Tuple
open fun tupleOf(vararg terms: Any): Tuple
Link copied to clipboard
open override fun unifierOf(assignments: Iterable<Pair<Var, Term>>): Substitution.Unifier
open override fun unifierOf(assignments: Sequence<Pair<Var, Term>>): Substitution.Unifier
open override fun unifierOf(vararg assignments: Pair<String, Term>): Substitution.Unifier
Link copied to clipboard
open fun unify(term1: Any, term2: Any, occurCheckEnabled: Boolean): Term?
open override fun unify(term1: Term, term2: Term): Term?
open override fun unify(term1: Term, term2: Term, occurCheckEnabled: Boolean): Term?
Link copied to clipboard
open infix fun Any.unifyWith(other: Any): Term?
Link copied to clipboard
open infix fun Any.univ(other: Any): Struct
Link copied to clipboard
open fun var(term: Any): Struct
Link copied to clipboard
open override fun varOf(name: Char): Var
open override fun varOf(name: String): Var
Link copied to clipboard
open override fun whatever(): Var
Link copied to clipboard
open override fun where(lambda: Scope.() -> Unit): Scope
Link copied to clipboard
open override fun <R> with(lambda: Scope.() -> R): R
Link copied to clipboard
open fun write(term: Any): Struct