Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dual operator design #136

Open
bvssvni opened this issue Apr 16, 2021 · 0 comments
Open

Dual operator design #136

bvssvni opened this issue Apr 16, 2021 · 0 comments

Comments

@bvssvni
Copy link
Contributor

bvssvni commented Apr 16, 2021

A dual operator might be used on 1-avatars in rules:

(X, Z) :- (X, Y), (Y, Z), (X*, X).

This rule is the same as the two following rules:

(X, Z) :- (X, Y), (Y, Z), (C'(X), X).
(C'(X), Z) :- (C'(X), Y), (Y, Z), (X, C'(X)).

The dual operator is possible because X* and X occur twice in the rules.

The 1-avatar is inferred from the possible cases:

X          X*            1-avatar
------------------------------------
a          b'(a)         b
b'(a)      a

b'(a)      c'(b'(a))     c
c'(b'(a))  b'(a)

a          c'(b'(a))     c'(b'(..))
c'(b'(a))  a

a          a             ()

The self duality is excluded by usign + instead of *, e.g. X+.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant