Coverage Summary for Class: ExtractId (it.unibo.tuprolog.argumentation.core.primitives.graph.language)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| ExtractId |
100%
(1/1)
|
100%
(2/2)
|
|
100%
(7/7)
|
100%
(42/42)
|
package it.unibo.tuprolog.argumentation.core.primitives.graph.language
import it.unibo.tuprolog.core.List
import it.unibo.tuprolog.core.Struct
import it.unibo.tuprolog.core.Substitution
import it.unibo.tuprolog.core.Term
import it.unibo.tuprolog.solve.ExecutionContext
import it.unibo.tuprolog.solve.primitive.BinaryRelation
import it.unibo.tuprolog.solve.primitive.Solve
/**
* extractId(+Rules, -Ids): `strict(Id)` for the identifier of each of Rules (lists starting with it)
*/
internal object ExtractId : BinaryRelation.WithoutSideEffects<ExecutionContext>("extractId") {
override fun Solve.Request<ExecutionContext>.computeAllSubstitutions(
first: Term,
second: Term,
): Sequence<Substitution> =
sequenceOf(
Substitution.of(
second.asVar()!!,
List.of(
first.asList()!!.toList().map {
Struct.of("strict", it.asCons()!!.head)
},
),
),
)
}