Coverage Summary for Class: RuleToClause (it.unibo.tuprolog.argumentation.core.primitives.graph.language)

Class Class, % Method, % Branch, % Line, % Instruction, %
RuleToClause 100% (1/1) 100% (2/2) 50% (1/2) 100% (10/10) 86.8% (33/38)


 package it.unibo.tuprolog.argumentation.core.primitives.graph.language
 
 import it.unibo.tuprolog.argumentation.core.model.terms.RuleTerm
 import it.unibo.tuprolog.core.List
 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
 
 /**
  * ruleToClause(+Rules, -Clauses): the rules and premises of the parser (`[Id, Body, Head]`, `[Id, Head]`) as
  * the clauses of the module rule
  */
 internal object RuleToClause : BinaryRelation.WithoutSideEffects<ExecutionContext>("ruleToClause") {
     override fun Solve.Request<ExecutionContext>.computeAllSubstitutions(
         first: Term,
         second: Term,
     ): Sequence<Substitution> =
         sequenceOf(
             Substitution.of(
                 second.asVar()!!,
                 List.of(
                     first
                         .asList()!!
                         .toList()
                         .map { original ->
                             RuleTerm.of(original.castToList()) ?: throw IllegalArgumentException()
                         },
                 ),
             ),
         )
 }