• Sonuç bulunamadı

Ramazan ve Kurban Bayramı Namazlarında Kunût

Belgede Kunût ibadeti (sayfa 46-53)

Nesta subseção são apresentadas definições que precisamente caracterizam metamodelos e modelos executáveis, incluindo adaptativos, assim como conceitos relacionados, tendo o SBMM como formalismo subjacente.

Seja um metamodelo arbitrário MM = (nameMM, C, , E, R, descriptorc, descriptore) e

SemanticsMM = (state_propsMM, event_classMM, bMM) uma semântica de execução

para MM. Seja C = {c1, c2, ... cn} com descriptorc(ck) = (metaclassnamek, Pk) para k =

1, 2, ..., n. O metamodelo PetriMM de nome “PetriMetamodel” da eq. (73) e o modelo

PetriM de nome “MyPetriNet01” da eq. (74) são utilizados como exemplos ao longo

das definições. Para esse metamodelo, considera-se a semântica SemanticsPetriMM =

162

 state_propsPetriMM(c1) = ;

 state_propsPetriMM(c2) = ;

 state_propsPetriMM(c3) = { (“numberOfTokens”, e1, 1..1) };

 state_propsPetriMM(c4) = ;

 state_propsPetriMM(c6) = ;

 event_classPetriMM = {c6};

 bPetriMM: especificado no Quadro 7.

Alguns dos conceitos apresentados abaixo já foram mencionados. Entretanto, suas definições são reescritas de forma mais precisa através de fórmulas e sentenças em lógica de primeira ordem.

Definição 1. Propriedades de Estado. pkj  Pk é uma propriedade de estado de

acordo com a semântica SemanticsMM se e somente se pkj  state_propsMM(ck). Uma

propriedade de estado tem o objetivo de descrever, parcial ou totalmente, o estado de execução dos modelos executáveis conformes a MM. A função auxiliar state_props_allMM(c) pode ser obtida a partir de state_propsMM. Ela mapeia a

metaclasse c em suas propriedades de estado e também naquelas de suas supermetaclasses, transitivamente, de acordo com (76).

state_props_allMM c = state_propsMM c ∪ ⋃ state_propsMM x

c,x ∈Γ+ (76)

Não se permite propriedades de estado em metaclasses de evento (ver Definição 5 adiante).

Exemplo da Definição 1. Em PetriMM, p31 = (“numberOfTokens”, e1, 1..1) é a única

163

Definição 2. Slots de Estado. Seja M = (nameM, nameMM, I, descriptori) um modelo

arbitrário conforme a MM. Seja I = {i1, i2, ... iq} com descriptori(ik) = (instancenamek,

metaclassnamek, Sk) para k = 1, 2, ..., q. O slot skj = (propertynamekj, valkj)  Sk é dito

ser um slot de estado de acordo com a semântica SemanticsMM se e somente se 

(w, t, m)  state_props_allMM(metaclass(MM, metaclassnamek)) (w =

propertynamekj). Em outras palavras, skj é um slot de estado se e somente se ele

corresponder a uma propriedade de estado da metaclasse identificada por propertynamek ou qualquer uma de suas supermetaclasses em MM. O conjunto de

todos os slots de estado de uma instância ik é denotado por state_slotsMM(ik).

Exemplo da Definição 2. Em PetriM, tem-se state_slotsPetriM(i1) =

{(“numberOfTokens”, “3”)}, state_slotsPetriM(i2) = {(“numberOfTokens”, “1”)},

state_slotsPetriM(i3) = {(“numberOfTokens”, “0”)} e state_slotsPetriM(ik) =  para todos

os outros k.

Definição 3. Metamodelos Executáveis por Estado. MM é dito ser executável por

estado de acordo com a semântica SemanticsMM se e somente se state_propsMM(c1)

 ...  state_propsMM(cn)  . Em outras palavras, é necessário haver pelo menos

uma propriedade de estado em qualquer metaclasse.

Exemplo da Definição 3. De acordo com a definição, PetriMM é um metamodelo

executável por estado.

Definição 4. Estado de Execução de um Modelo. Seja M = (nameM, nameMM, I,

descriptori) um modelo arbitrário conforme a MM. Seja I = {i1, i2, ... iq} com

descriptori(ik) = (instancenamek, metaclassnamek, Sk) para k = 1, 2, ..., q. O estado

de execução de M de acordo com a semântica SemanticsMM é o conjunto de todos

os slots de estado de todas as instâncias combinados com os nomes das instâncias em um par ordenado, excluindo-se aquelas instâncias que não tem slots de estado. A eq. (77) expressa esse conceito através da função ExecState. O estado de execução descreve um snapshot do modelo em execução. Uma vez que os slots

164 não contêm informação sobre suas instâncias proprietárias em si mesmos, os nomes das instâncias foram incluídos nos pares para identificar completamente os “carregadores” de cada informação de estado.

ExecState M = ⋃ { instancename , state_slotsMM i } ∈I ∧ a e_ o MM ≠∅

(77)

Exemplo da Definição 4. ExecState(PetriM) = { (“place01”, {(“numberOfTokens”,

“3”)}), (“place02”, {(“numberOfTokens”, ”1”)}), (“place03”, {(“numberOfTokens”, “0”)}) }. O resultado da função descreve completamente o estado de execução de PetriM.

Definição 5. Metaclasses de Evento. c  C é dita ser uma metaclasse de evento

de acordo com a semântica SemanticsMM se e somente se c  event_metaclassMM.

Observe que se x é uma submetaclasse de c, isto é, (x,c)  +, então x também

pertence a event_classMM. Caso contrário, event_classMM não é considerado um

conjunto válido para compor SemanticsMM. Como outra restrição, metaclasses de

evento não podem conter propriedades de estado, isto é, c  C (c  event_classMM

 state_props_allMM(c) = ).

Exemplo da Definição 5. Em PetriMM, c6 (Firing) é a única metaclasse de evento.

Definição 6. Eventos Concretos. Seja M = (nameM, nameMM, I, descriptori) um

modelo arbitrário conforme a MM. ev  I é dito ser um evento concreto de acordo com a semântica SemanticsMM se e somente se pelo menos um de seus tipos é um

elemento de event_classMM, ou seja,  t  types(MM,M,ev) (t  event_classMM).

Exemplo da Definição 6. PetriM não possui nenhum evento concreto tal como

apresentado na subseção 5.2.3. Entretanto, se o motor de execução instanciar ev tal que descriptori(ev) = {“firing01”, “Firing”, {(“timeStamp”, “1”), (“transition”, i4)}), então

165

Definição 7. Propriedades Estruturais. pkj  Pk é uma propriedade estrutural de

acordo com a semântica SemanticsMM se e somente se pkj  state_propsMM(ck)  ck

 event_classMM. Em outras palavras, propriedades estruturais são aquelas que não

são propriedades de estado e nem pertencem a uma metaclasse de evento. Também se define a função auxiliar strucutral_propsMM(c) que retorna o conjunto de

propriedades estruturais da metaclasse c. Esta função não é uma nova parte de SemanticsMM porque pode ser obtida a partir de state_propsMM e event_classMM.

Outra função strucutral_props_allMM(c) é definida como um mapeamento da

metaclasse c para suas propriedades estruturais considerando também aquelas de suas supermetaclasses, transitivamente. Sua definição é análoga à eq. (76).

Exemplo da Definição 7. Em PetriMM, structural_propsMM(c1) = {(“weight”, e1, 1..1),

(“source”, c2, 1..1), (“destination”, c2, 1..1)}, strucutral_propsMM(c2) = ,

strucutral_propsMM(c3) = , structural_propsMM(c4) e structural_props(c6) = .

Definição 8. Slots Estruturais. Seja M = (nameM, nameMM, I, descriptori) um modelo

arbitrário conforme a MM. Seja I = {i1, i2, ... iq} com descriptori(ik) = (instancenamek,

metaclassnamek, Sk) para k = 1, 2, ..., q. skj = (propertynamekj, valkj)  Sk é dito ser

um slot estrutural de acordo com SemanticsMM se e somente se  (w, t, m) 

structural_props_allMM(metaclass(MM, metaclassnamek)) (w = propertynamekj). Em

outras palavras, skj é um slot estrutural se e somente se corresponder a uma

propriedade estrutural da metaclasse identificada por metaclassnamek em MM, ou

de uma de suas supermetaclasses. O conjunto de todos os slots estruturais da instância ik é denotado por structural_slotsMM(ik).

Exemplo da Definição 8. Em PetriM, tem-se structural_slotsPetriM(i5) = {(“weight”, “3”),

(“source”, i1), (“destination”, i4)}, strucutral_slotsPetriM(i6) = {(“weight”, “1”), (“source”,

i2), (“destination”, i4)} e structural_slotsPetriM(i7) = {(“weight”, “2”), (“source”, i4),

166

Definição 9. Parte Estrutural do Modelo. Seja M = (nameM, nameMM, I, descriptori)

um modelo arbitrário conforme a MM. Seja I = {i1, i2, ... iq} com descriptori(ik) =

(instancenamek, metaclassnamek, Sk) para k = 1, 2, ..., q. A parte estrutural de M de

acordo com a semântica SemanticsMM é o conjunto de slots estruturais de todas as instâncias combinados com os nomes das instâncias em pares ordenados de acordo com (78). Essa definição é análoga à definição de estado de execução de um modelo. A parte estrutural está relacionada aos elementos do modelo que permanecem inalterados durante a execução não-adaptativa do modelo (ver Definição 10 mais adiante). Uma vez que os slots não contêm informação sobre suas instâncias proprietárias em si mesmos, os nomes das instâncias foram incluídos nos pares para identificar completamente os “carregadores” de cada informação estrutural.

StructuralPart M = ⋃{ instancename , structural_slotsMM i } ∈I

(78)

Diferentemente da definição de ExecState, em StructuralPart até mesmo as instâncias que não possuem slots estruturais são incluídas na definição.

Exemplo da Definição 9. StructuralPart(PetriM) = {(“arc01”, {(“weight”, “3”),

(“source”, i1), (“destination”, i4)}), (“arc02”, {(“weight”, “1”), (“source”, i2), (“destination”,

i4)}), (“arc03”, {(“weight”, “2”), (“source”, i4), (“destination”, i3)}), (“transition01”, ),

(“place01”, ), (“place02”, ), (“place03”, )}. Ela descreve completamente a parte estrutural do modelo.

Definição 10. Metamodelos Executáveis Não-Adaptativos. MM é um metamodelo

executável não-adaptativo de acordo com a semântica SemanticsMM se e somente

se ele é executável por estado (Definição 3) e o modelo de saída computado por bMM

tem parte estrutural (Definição 9) igual àquela do modelo de entrada, para qualquer modelo e evento concreto de entrada. Essa condição é representada pela eq. (79).

167 Seja M = (nameM, nameMM, I, descriptori) um modelo arbitrário conforme a MM em

qualquer passo de execução.

 M  M(MM) (  ev  IMM(event_classMM) ( (  t  types(MM, M, ev) ( t 

event_classMM ) )  ( StructuralPart( bMM (M, ev) ) = StructuralPart(M) ) ) ) (79)

Exemplo da Definição 10. PetriMM é um metamodelo executável não-adaptativo de

acordo com SemanticsPetriMM porque bPetriMM, como especificado no Quadro 7, nunca

altera a parte estrutural do modelo de entrada. A função é capaz apenas de alterar slots relacionados à propriedade numberOfTokens, que é uma propriedade de estado. Além disso, esta função não insere novas instâncias de qualquer metaclasse no modelo.

Definição 11. Modelos Executáveis Não-Adaptativos. M é um modelo executável

não-adaptativo de acordo com a semântica SemanticsMM se e somente se seu

metamodelo MM é executável não-adaptativo (Definição 10) de acordo com a mesma semântica e se M é conforme a MM.

Exemplo da Definição 11. PetriM é um modelo executável não-adaptativo de acordo

com SemanticsPetriMM porque ele é conforme a PetriMM, que é um metamodelo

executável não-adaptativo.

Neste ponto, a definição de metamodelos e modelos executáveis adaptativos aparecem quase que naturalmente com base nos conceitos apresentados acima.

Definição 12. Metamodelos Executáveis Adaptativos. MM é um metamodelo

executável adaptativo de acordo com a semântica SemanticsMM se e somente se o

modelo de saída computado por bMM tem parte estrutural (Definição 9) diferente da

168 possíveis. Esta situação está representada pela eq. (80). Seja M = (nameM, nameMM,

I, descriptori) um modelo arbitrário conforme a MM em qualquer passo de execução.

 M  M(MM) (  ev  IMM(event_classMM) ( (  t  types(MM, M, ev) ( t 

event_classMM  StructuralPart( bMM (M, ev) )  StructuralPart(M) ) ) ) ) (80)

Definição 13. Modelos Executáveis Adaptativos. M é um modelo executável

adaptativo de acordo com a semântica SemanticsMM se e somente se seu

metamodelo MM é executável adaptativo (Definição 12) de acordo com a mesma semântica e se M é conforme a MM.

Exemplo da Definição 13. PetriM não é um modelo adaptativo de acordo com

SemanticsPetriMM porque ele é conforme a PetriMM, que não é um metamodelo

executável adaptativo.

Definição 14. Metamodelos Executáveis. MM é um metamodelo executável de

acordo com a semântica SemanticsMM se e somente se ele for executável não-

adaptativo (Definição 10) ou executável adaptativo (Definição 12) de acordo com a mesma semântica. Alternativamente, pode-se dizer que a DSML especificada por MM é executável.

Exemplo da Definição 14. PetriMM é um metamodelo executável de acordo com a

semântica SemanticsPetriMM porque ele é executável não-adaptativo.

Definição 15. Modelos Executáveis. M é um modelo executável de acordo com a

semântica SemanticsMM se e somente se seu metamodelo MM é executável de

169

Exemplo da Definição 15. PetriM é um modelo executável de acordo com a

semântica SemanticsPetriMM porque ele é conforme a PetriMM, que é um metamodelo

executável.

Belgede Kunût ibadeti (sayfa 46-53)

Benzer Belgeler