Package-level declarations
Types
Full term-construction and unification scope of :dsl-unify's Prolog DSL: composes :dsl-core's scope mixins (MinimalLogicProgrammingScope, LogicProgrammingScopeWithSubstitutions, LogicProgrammingScopeWithPrologStandardLibrary, LogicProgrammingScopeWithOperators, LogicProgrammingScopeWithVariables — none of which know anything about unification) with LogicProgrammingScopeWithUnification, so an it.unibo.tuprolog.unify.Unificator's operations (bare, or through the mguWith/matches/unifyWith sugar) are available alongside the rest of the DSL, all self-referentially typed so chained calls keep resolving to this same, richer scope.
Adds unification-related DSL sugar to LogicProgrammingScopeWithUnificator: every Unificator operation gets an overload accepting plain Any operands (auto-toTerm-ed, exactly like the rest of the :dsl-core DSL), plus infix aliases mirroring it.unibo.tuprolog.unify.Unificator.Companion's own Term-only infix functions (it.unibo.tuprolog.unify.Unificator.Companion.mguWith, it.unibo.tuprolog.unify.Unificator.Companion.matches, it.unibo.tuprolog.unify.Unificator.Companion.unifyWith) but resolved against this scope's unificator instead of always Unificator.default:
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.
Functions
Entry point of :dsl-unify's Prolog DSL: like :dsl-core's it.unibo.tuprolog.dsl.logicProgramming, but the receiver is a LogicProgrammingScope — so unification (it.unibo.tuprolog.unify.Unificator.mgu, it.unibo.tuprolog.unify.Unificator.match, it.unibo.tuprolog.unify.Unificator.unify, or the mguWith/matches/unifyWith sugar) is available inside function alongside the rest of the DSL — using unificator (an empty-context it.unibo.tuprolog.unify.Unificator.strict strategy by default) as its unification strategy:
Shorthand for logicProgramming.
Deprecated alias of logicProgramming/lp; kept only for backwards compatibility.
Upgrades this :dsl-core scope into a :dsl-unify LogicProgrammingScope adding unification support to it, reusing its underlying it.unibo.tuprolog.core.Scope, it.unibo.tuprolog.dsl.Termificator and it.unibo.tuprolog.core.VariablesProvider (so it.unibo.tuprolog.core.Vars and terms already built through this scope remain valid and usable in the returned one) and equipping it with unificator (LogicProgrammingScope.defaultUnificator unless stated otherwise) as its unification strategy. Useful when a plain :dsl-core scope is already at hand (e.g. received as a parameter) and unification is only needed from that point on.