En este apartado se va a ampliar el corpus formal con nuevas definiciones, que implicarán a todos los tipos de metaobjetos y las condiciones simultáneamente. Hasta ahora, cada definición formal presentada sólo afectaba bien a un tipo de metaobjetos o a las condiciones, bien a algunos tipos de metaobjetos y a las condiciones.
- id: función total. Devuelve el atributo identificador de un metaobjeto. METAOBJETOS → STRINGS
Inicialmente, el valor de Id(obj) será “” (vacío).
- existencial_restringido: función total. Devuelve el atributo existencial_restringido de un metaobjeto.
METAOBJETOS → { CIERTO, FALSO }
- dinámico: función total. Devuelve el atributo dinámico de un metaobjeto. METAOBJETOS → { CIERTO, FALSO }
- ENTORNOS: Conjunto de todos los posibles subconjuntos de metaobjetos, condiciones y relaciones de generalización.
ENTORNOS = ρ(METAOBJETOS ∪ CONDICIONES ∪ RELS-DE-GEN) - Condiciones: función total. Devuelve las condiciones existentes en un entorno.
ENTORNOS →ρ(CONDICIONES)
- Rels-de-gen: función total. Devuelve las relaciones de generalización existentes en un entorno. ENTORNOS →ρ(RELS-DE-GEN)
- INSTANCIACIONES: Familia de funciones parciales.
INSTANCIACIONES = F(VARIABLES ∪ NOMBRES-CCR2 ∪ {“METAITEM ATRIBUTO”} → METAOBJETOS)
Cada función de esta familia instancia cada elemento de un conjunto de variables, nombres CCR-2, y/o una constante “METAITEM ATRIBUTO”, con un metaobjeto.
- METAS-INSTANCIADAS = METAS x ENTORNOS x INSTANCIACIONES
Una meta instanciada es una terna (meta, E, I) formada por una meta, un entorno y una función de instanciación.
Las metas instanciadas (meta, E, I) cumplen la siguiente propiedad:
∀x∈nombres&vars(meta) I(x)∈E.
Es decir, cualquier nombre o variable que aparezca en la meta está ligado a un metaobjeto, por medio de la función I, y este metaobjeto está presente en E.
- ACCIONES-INSTANCIADAS = ACCIONES x ENTORNOS x INSTANCIACIONES Una acción instanciada es una terna (acc, E, I) formada por una acción, un entorno y una función de instanciación.
- Validez metaobjetos-Meta:
Relación ⇒o ⊂ ENTORNOS x METAS x INSTANCIACIONES
Una cierta tupla (E, m, I) pertenecerá a esta relación sii existe una instanciación I de la meta m con los metaobjetos, condiciones y relaciones de generalización presentes en E, que hace cierta la meta m. Para que esto ocurra, los metaobjetos, condiciones y relaciones de generalización presentes en E deben cumplir una serie de requisitos. Estos requisitos se verán con detalle a continuación.
Esta definición se puede expresar formalmente en términos de Metaobjetos, condiciones y relaciones de generalización del siguiente modo:
A ⇒o (meta, I) sii ∃E∈ENTORNOS, E⊆A tal que:
Si meta = P_existe_tupla (rel, (item1, item2, ...,itemn), fc) Entonces I(rel) = Metarrelación, I(itemi) = Metaitemi, ∀i∈{1..n} ∧ Tipo(Metarrelación) = Tipo(rel, regla-meta(meta)) ∧ Si fc es una cte Entonces
E = { Metarrelación, Metaitem1,..., Metaitemn, Condición } Si no /* fc es una variable */
E = { Metarrelación, Metaitem1,..., Metaitemn } tal que:
(Metarrelación, (Metaitem1,..., Metaitemn)) ∈ tuplas(Metarrelación) Metarrelación ∈ Relaciones(Metaitemi), ∀i∈{1..n}
carácter((Metarrelación, (Metaitem1,..., Metaitemn)) = Cierto Si fc es una cte Entonces Condición ∈ E tal que
Expresión(Condición) = “FC((rel, (item1, item2, ...,itemn))) = fc” Condición ∈ Refs-Condiciones-fc(Metarrelación, (Metaitem1,..., Metaitemn))
Ligaduras-condicion-fc(Condición, (Metarrelación, (Metaitem1,..., Metaitemn))) = " FC((rel, (item1, item2, ...,itemn)))"
(Metarrelación, (Metaitem1,..., Metaitemn)) ∈ Argumentos(Condición) Si rel es un nombre CCR-2 Entonces id(Metarrelación) = rel
Si itemi es un nombre CCR-2 Entonces id(Metaitemi) = itemi, ∀i∈{1..n} Si meta = ¬P_existe_tupla (rel, (item1, item2, ...,itemn), fc) Entonces
Igual que antes, salvo que ahora carácter((Metarrelación, (Metaitem1,..., Metaitemn)) = Falso
Si meta = P_existe_proposicion (prop, fc) Entonces I(prop) = Metaproposición ∧
Tipo(Metaproposición) = Tipo(prop, regla-meta(meta)) ∧ Si fc es una cte Entonces
E = { Metaproposición, Condición } Si no
E = { Metaproposición } tal que:
carácter(Metaproposición) = Cierto
Si fc es una cte Entonces Condición ∈ E tal que Expresión(Condición) = “FC(prop) = fc”
Condición ∈ Refs-Condiciones-fc(Metaproposición)
Ligaduras-condicion-fc(Condición, Metaproposición) = "prop" Metaproposición ∈ Argumentos(Condición)
Si prop es un nombre CCR-2 Entonces id(Metaproposición) = prop Si meta = ¬ P_existe_proposicion (prop, fc) Entonces
Igual que antes, salvo que ahora carácter(Metaproposición) = Falso Si meta = P_subinstancia (clase, instancia) Entonces
I(clase) = Metaitem1, I(instancia) = Metaitem2 ∧ E = { Metaitem1, Metaitem2, subinstancia(a, b) } tal que:
(CIERTO, a) ∈ Subinstancia(Metaitem2)
Si clase es un nombre CCR-2 Entonces id(Metaitem1) = clase, a = clase Si no a = Metaitem1, (CIERTO, Tipo(clase, regla-
meta(meta)))∈Subinstancia(Metaitem1)
Si instancia es un nombre CCR-2 Entonces id(Metaitem2) = instancia, a = instancia Si no b = Metaitem2, (CIERTO, Tipo(clase, regla-
meta(meta)))∈Subinstancia(Metaitem2) Si meta = ¬P_subinstancia (clase, instancia) Entonces
I(clase) = Metaitem1, I(instancia) = Metaitem2 ∧ E = { Metaitem1, Metaitem2, ¬subinstancia(a, b) } tal que:
(FALSO, a) ∈ Subinstancia(Metaitem2)
Si clase es un nombre CCR-2 Entonces id(Metaitem1) = clase, a = clase Si no a = Metaitem1
Si instancia es un nombre CCR-2 Entonces id(Metaitem2) = instancia, a = instancia Si no a = Metaitem2
Si meta = P_subclase (padre, hijo) Entonces I(padre) = Metaitem1, I(hijo) = Metaitem2 ∧ E = { Metaitem1, Metaitem2, subclase(a, b) } tal que:
(CIERTO, a) ∈ Subclase(Metaitem2)
Si padre es un nombre CCR-2 Entonces id(Metaitem1) = padre, a = padre Si no a = Metaitem1
Si hijo es un nombre CCR-2 Entonces id(Metaitem2) = hijo, b = hijo Si no b = Metaitem2
Si meta = ¬P_subclase (padre, hijo) Entonces I(padre) = Metaitem1, I(hijo) = Metaitem2 ∧ E = { Metaitem1, Metaitem2, ¬subclase(a, b) } tal que:
(FALSO, a) ∈ Subclase(Metaitem2)
Si padre es un nombre CCR-2 Entonces id(Metaitem1) = padre, a = padre Si no a = Metaitem1
Si hijo es un nombre CCR-2 Entonces id(Metaitem2) = hijo, b = hijo Si no b = Metaitem2
Si meta = P_valor_atributo ((item, (id1, id2, ...,idn)), valor, fc) Entonces
I(item) = Metaitem, I(“Metaitem atributo”) = Metaitem atributo, ∀i∈{1..n}I(idi) = Metaidi
∧
Si valor y fc son ctes Entonces
E = { Metaitem, Metaid1,..., Metaidn, Metaitem atributo, Condición1, Condición2 }
∧
E = { Metaitem, Metaid1,..., Metaidn, Metaitem atributo, Condición1} ∧ Si valor es var y fc es cte Entonces
E = { Metaitem, Metaid1,..., Metaidn, Metaitem atributo, Condición2} ∧ tal que:
Esquema-de-acceso((Metaitem atributo) = (Metaitem, (Metaid1,..., Metaidn))) Metaitem atributo ∈ Atributos(Metaitem)
Si valor es una cte Entonces Condición1 ∈ E tal que
Expresión(Condición1) = “VALOR((item, (id1, id2, ...,idn)))= valor” Ligaduras-condicion-valor(Condición1, Metaitem atributo) = “VALOR((item, (id1, id2, ...,idn)))"
Condición1 ∈ Refs-Condiciones-valor(Metaitem atributo) (Metaitem atributo, valor) ∈ Argumentos(Condición1) Si fc es una cte Entonces Condición2 ∈ E tal que
Expresión(Condición2) = “FC((item, (id1, id2, ...,idn)))= fc”
Ligaduras-condicion-fc(Condición1, Metaitem atributo) = “FC((item, (id1, id2, ...,idn)))"
Condición2 ∈ Refs-Condiciones-fc(Metaitem atributo) Metaitem atributo ∈ Argumentos(Condición2)
Si item es un nombre CCR-2 Entonces id(Metaitem) = item, a=item Si no a = Metaitem
Si idi es un nombre CCR-2 Entonces id(Metaidi) = idi, ai=idi Si no ai = Metaidi, ∀i∈{1..n}
Si meta = ¬P_valor_atributo ((item, id1, id2, ...,idn), cte, var)2 Entonces
I(item) = Metaitem, I(“Metaitem atributo”) = Metaitem atributo, ∀i∈{1..n}I(idi) = Metaidi
∧
E = { Metaitem, Metaid1,..., Metaidn, Metaitem atributo, Condición1} tal que:
Esquema-de-acceso((Metaitem atributo) = (Metaitem, (Metaid1,..., Metaidn)) Metaitem atributo ∈ Atributos(Metaitem)
Expresión(Condición1) = “VALOR((item, id1, id2, ...,idn)) ≠ cte”
Ligaduras-condicion-valor(Condición1, Metaitem atributo) = “VALOR((item, id1, id2, ...,idn))"
Condición1 ∈ Refs-Condiciones-valor(Metaitem atributo) Metaitem atributo ∈ Argumentos(Condición1)
Si item es un nombre CCR-2 Entonces id(Metaitem) = item, a=item Si no a = Metaitem
Si idi es un nombre CCR-2 Entonces id(Metaidi) = idi, ai=idi Si no ai = Metaidi, ∀i∈{1..n}
Todas las metas instanciadas (meta, entorno, I) que construirá MECORI formarán parte de esta relación: entorno ⇒o (meta, I).
2
De acuerdo con la restricción sintáctica impuesta en el apartado “4.3.3. Especificación de la Base de Reglas”, para los patrones de tipo P_valor_atributo negados, el argumento de tipo valor de atributo debe ser una constante, y el argumento de tipo factor de certeza debe ser una variable.