Logtalk reference manual
Predicate directive: coinductive/1

coinductive/1

Description

coinductive(Functor/Arity)
coinductive((Functor1/Arity1, Functor2/Arity2, ...))
coinductive([Functor1/Arity1, Functor2/Arity2, ...])

coinductive(Template)
coinductive((Template1, Template2, ...))
coinductive([Template1, Template2, ...])

This is an experimental directive, used for declaring coinductive predicates. Requires a back-end Prolog compiler with minimal support for cyclic terms. The current implementation of coinduction allows the generation of only the basic cycles. Use a predicate indicator as argument when all the coinductive predicate arguments are relevant for coinductive success. Use a template when only some coinductive predicate arguments (represented by a "+") should be considered when testing for coinductive success (represent the arguments that should be disregarded by a "-").

Template and modes

coinductive(+predicate_indicator_term)
coinductive(+coinductive_predicate_template_term)

Examples

:- coinductive(comember/2).
:- coinductive(controller(+,+,+,-,-)).