# ExtensionalImplicationScopeLink

From OpenCog

## Format

ExtensionalImplicationScopeLink <TV> <vardecl> <implicant-body> <implicand-body>

## Semantics

In PLN

ExtensionalImplicationScopeLink <TV> <vardecl> <implicant-body> <implicand-body>

is equivalent to

ExtensionalImplicationLink <TV> LambdaLink <vardecl> <implicant-body> LambdaLink <vardecl> <implicand-body>

As you may see the former is more compact and can be considered as sugary syntax for the latter. And the PLN semantics of the latter is equivalent to ExtensionalInheritanceLink over the satisfying sets of the predicates.

Likewise

ExtensionalImplicationScopeLink <TV> X EvaluationLink P X EvaluationLink Q X

is equivalent to

ExtensionalImplicationLink <TV> P Q

because

LambdaLink X EvaluationLink P X

is equivalent to

P

### Remarks

Note that

ExtensionalImplicationScopeLink <TV> X EvaluationLink P X EvaluationLink Q X

is not equivalent to

AverageLink <TV> X ExtensionalImplicationLink EvaluationLink P X EvaluationLink Q X

Indeed, the former has formula

TV.s = Sum_X f(P(X), Q(X)) * X.s / Sum_X P(X) * X.s

while the latter has formula

TV.s = Sum_X [ f(P(X), Q(X)) / P(X) ] / Sum_X X.s

which is close but not equal.

For similar reasons it is not equivalent to

ForAllLink <TV> X ExtensionalImplicationLink EvaluationLink P X EvaluationLink Q X

either.

See PredicateFormulaLink for an example of specifying formulas in Atomese.