As diferenças essenciais entre os dialetos SiRLI e Flora de
F-Logic são as seguintes.
- Em
SiRLI como na lógica dos predicados variáveis são explicitamente
quantificadas usando FORALL e EXIST, enquanto em Flora como no Prolog as
variáveis são todas implicitamente universalmente quantificadas. Para
expressar em Flora um termo SiRLI com variável existencialmente
quantificada sem mudar a semântica do termo, simplesmente use uma
constante distinta para cada variável existencialmente quantificada
distinta. Para expressar em Flora um termo SiRLI com variável
universalmente quantificada, simplesmente use uma maiúscula como primeira
letra dessa variável.
- Em
SiRLI como na lógica dos predicados constantes começam com maiúscula,
enquanto no Flora como no Prolog, constantes começam com minúscula para
distinguir elas de variáveis que começam com maiúscula.
- Em
SiRLI a conjunção lógica é expressada pela palavra AND enquanto em Flora
como no Prolog ela é expressada por uma simples virgula
- Em
SiRLI a implicação lógica é expressada pela string “<-“ onde A <- B
quer dizer “B implica logicamente A”, enquanto no Flora como no Prolog é
expressada pela string “:-“ onde A :- B quer dizer “B implica logicamente
A”
- SiRLI
autoriza regras com a conectiva de equivalência lógica <->, enquanto
Flora não permite diretamente isso; para expressar tal regras SiRLI com
equivalência é necessário em Flora usar duas regras, cada um expressando
uma das duas implicação da equivalência, o seja, uma regras SiRLI da forma
A <-> B pode ser traduzido para Flora pelas duas regras A :- B e B
:- A.
Agora alguns exemplos de clausulas SiRLI seguidas das suas
traduções Flora:
Pedaço de hierarquia conceitual em sintaxe SiRLI:
Organization :: Root.
Enterprise :: Organization.
Mesma hierarquia em sintaxe Flora:
organization
:: root.
enterprise :: organization.
Assinatura de classe em sintaxe SiRLI:
Product[producedBy
=>> Project;
developedBy =>>
Organization].
Mesma assinatura em sintaxe Flora:
product[producedBy
=>> project;
developedBy =>> organization].
Meta-regra implicativa em sintaxe SiRLI:
FORALL O,C,A,V,T V:T <- C[A=>>T] AND
O:C[A->>V].
Mesma meta-regra em sintaxe Flora
V:T :- C[A=>>T], O:C[A->>V].
Regra de equivalencia em sintaxe SiRLI
FORALL
Event1, Event2
Event1:Event[hasParts ->>
Event2] <->
Event2:Event[atEvent
->> Event1].
Par de regras equivalentes em sintaxe Flora:
Event1:event[hasParts
->> Event2] :- Event2:event[atEvent ->> Event1].
Event2:event[atEvent
->> Event1] :- Event1:event[hasParts ->> Event2].