martes, 13 de noviembre de 2012

Lógica temporal


Lógica temporal

La lógica temporal es una extención de la lógica modal , en donde el tiempo esta presente.
Los principales operadores para la lógica temporal son los siguientes:





Problema 14.1.5


(5) Professors sometimes leave with a drink left in the dispenser.

Para este problema usaremos dos variables "a" para representar a los profesores y "b" para representar "dejaron una bebida en el deposito".


Quedaría de la siguiente manera:

a ◇ b

Liga: http://www.voronkov.com/lics_doc.cgi?what=chapter&n=14

martes, 6 de noviembre de 2012

w-Regular

En esta ocación inventaremos una expreción w-regular y la expresaremos en forma NBA

Estas son las característica que debe tener nuestra expreción: 

1-. Por lo menos dos símbolos
2-. Por lo menos dos operadores


Aquí la expreción:



Posteriormente teniendo la expreción se mostrara en un diagrama de NBA(Nondeterministic Büchi Automaton)  

Aqui el diagrama NBA:



Referencias:
Principles of model checking book
Autor: Christel Baier and Joost-Pieter Katoen

martes, 30 de octubre de 2012

Sistema de tranciciones

En esta ocación realisaremos un sistema de transisciones para la fabricación de unas deliciosas galletitas. Tendra la maquina que crea las galletitas con el material, Otra maquina que decora y el empaquetado.

Componentes:

1-. Tres maquinas : Las maquinas haran las galletas, la decoracion y el empaquetado
2-. Galletitas: El producto final

En este sistema de transiciones se componen de los siguientes estados:

1-.Máquina1: Representa el estado de la maquina1
2-.Máquina 2: Representa el estado de la maquina2
3-.Máquina 3: Representa el estado de la maquina3
4-.Bodega 1: Almacenaje de galletitas hechas
5-.Bodega 2: Almacenaje de galletitas decoradas

Aquí la representación de cada una de las compociciones:

Máquina 1:

la máquina pasa las galletitas terminadas a la bodega 1


Máquina 2:


Aquí la bodega  le manda una señal que tiene galletas listas y la Maquina 2 las recoge para decorarlas


Maquina 3:

Esta es parecida a la anterior con el mismo mecanismo, ya listas las galletas decoradas la Máquina 3 las decora y estan listas para su distribución.


Sistema de transferencia (Todo lo anterior unido):

(0,0,0,0,0) = (Máquina 1, Máquina 2, Máquina 3, Bodega 1, Bodega 2)
En cada Máquina el cero indica que no esta en operación y uno esta en operacón

En cada Bodega = Listo para transferencia = 1,  Falta producto = 0

Transferencia: (1,2,3) = (Pasar galletas, Dejar Galletas, Cambiar estado de maquinas)





Eso es todo quedo algo revuelto el sistema ya que son varios estados de cada una de las maquinas y de las bodegas.





lunes, 22 de octubre de 2012

Red Petri

Buenas para esta semana haremos lo que se llama Red de Petri

Una Red de Petri es una simulación de un sistema, con eventos de forma paralela, concurrente o de manera distribuida, puede ser representada tanto matemáticamente o gráficamente.

Estos sistemas por lo general están compuestos por:

Transiciones: Estas Transiciones están unidas por lo general a dos lugares o mas.
Lugares:  Son los estados del sistema.
Marcas: Representación de los objetos dentro de los lugares.


El sistema a simular es el uso de ventiladores de enfriamiento de "x" compañía
Contenido del sistema:

Ventilador1
Ventilador2
Ventilador3

Cada uno tendrá sus tres estados de prendidos
Prendido1 para el Ventilador1
Prendido2 para el Ventilador2
Prendido3 para el Ventilador3

El "Ventilador 1" estará prendido durante un período de tiempo y se apagará. Pasando el mismo tiempo volverá a funcionar.

El "Ventilador 2" estará prendido hasta cierto punto de calentamiento y regresará al trabajo cuando este frió nuevamente.

El "Ventilador 3" estará prendido solo si los primeros dos Ventiladores están apagados y este se apagará cuando uno de los otros dos regresen a funcionar.

Los demás estados

Apagado: Como su nombre lo indica, es el estado de apagado para los tres ventiladores

Descompuesto, Como su nombre indica es para representación de los ventiladores que ya no funcionan o no son operacionables.

Este sistema lo representamos con Python-snakes, esta librería es útil para formar diferentes redes de petri:

Aquí el código:


Aquí la imagen que nos genera:

Los cuadros son las diferentes transiciones  y los ovalos son los diferentes estados.

Refenrecias:
http://www.uhu.es/diego.lopez/AI/auto_trans-tema3.PDF
http://es.wikipedia.org/wiki/Red_de_Petri
Tutorial donde me base para hacer el código de python: TUTO




domingo, 7 de octubre de 2012

Aplicación de la lógica predicativa

Aplicaciones para la lógica predicativa:







Existen diferentes tipos de aplicaciones para la lógica predicativa, desde  teoremas matemáticos hasta resoluciones de problemas de la vida diaria.

En esta ocasión se hablara sobre los sistemas expertos y la manera en que se relaciona con la lógica predicativa.

Que son los sistemas expertos? 





Son aquellos problemas o sistemas que exigen un gran conocimiento y preparación de un tema en especifico, estos sistemas  tratan de simular la manera en que un humano lo resolvería y para realizar esto se necesitan diferentes tipos de reglas y cierto conocimiento del tema.

Existen diferentes tipos de sistemas expertos como lo son :


Basados en reglas previamente establecidas.
Basados en casos o CBR (Case Based Reasoning).
Basados en redes bayesianas.

Para la solución de cada uno de estos problemas se puede realizar mediante


1-. Aplicando diferente ramas de la lógica
2-. Aplicando redes bayesianas basada en estadística y en el mismo teorema bayesiana
3-. Aplicando el razonamiento basado en casos similares al problema a resolver


En  este caso nos enfocaremos mas en sistemas expertos con reglas previamente establecidos, ya que por lo general se resuelven utilizando diferentes ramas de lógicas.

En la medicina:
Esta lógica predicativa es realmente útil en áreas como la medicina,  para identificar diferentes tipos de enfermedades, separar conjuntos de individuos si tienen alguna enfermedad. Parentescos o predicciones si el siguiente heredero es varón o mujer.


Mas aplicaciones




También en sistemas de aeropuertos para separar los diferentes tipos de vuelos y rutas
Usando reglas como:

Si es el único avión en esa ruta
Si todos los aviones están en esa ruta
No hay ningún avión en esa ruta
Entre más.

Limitaciones de cualquier problema para realizar alguna meta en particular
Como por ejemplo reparar algo:

No hay esa herramienta en la caja
Hay pocos materiales en la caja
Si hay persones para arreglar el problema
Entre mas




Para realizar censos de diferentes poblaciones:




Ejemplo tomado de aqui: http://www.driverop.com.ar/textosutiles/lpo


Por ejemplo: "Para todo ciudadano ruso, si ha nacido antes de 2001, debería estar en el censo de 2002" Podemos usar predicados y decir "Para todo x ciudadano ruso(x), si año de nacimiento(x) < 2001, está en el censo(x, 2002)".

1-. ciudadano ruso(x): sería un predicado que dependiendo de x nos da "cierto" si x es un ciudadano ruso, y falso si no lo es.
2-. año_de_nacimiento(x): seria una función que nos da el año de nacimiento de x.
3-. está_en_el_censo(x, y): sería una función que dependiendo de x y de y, nos dice si x está en el censo que se ha hecho el año y.

Y mas que nada para sistemas expertos que se requiera separar grupos de personas o cosas, o unir con sus iguales.








Enlaces importantes y cosas buenas para leer:
http://www.cs.otago.ac.nz/cosc343/Lectures/l10.pdf
http://www.angelfire.com/ia3/aisite/logica.htm
http://www.driverop.com.ar/textosutiles/lpo
http://es.wikipedia.org/wiki/Sistema_experto

sábado, 15 de septiembre de 2012

Semana 6

Variables libres y ligadas

En esta semana nos toco escoger un problema del siguiente pdf y realizarlo:
Liga del pdf: http://www.logicinaction.org/docs/ch4.pdf


Ejercicio a realizar:


Exercise 4.27 Give the bound occurrences of x in the following formula.
∃x(Rxy v Sxyz) ^ P x

Traducción:

Dar a las ocurrencias ligados de x en la fórmula siguiente.
∃x(Rxy v Sxyz) ^ P x

Antes para poder ver mejor el problema sacamos su árbol o estructura:

En la primera sentencia con tres ocurrencias: "∃x(Rxy v Sxyz) " estan ligados x1, x2 y x3, por un cuantificador existencial

Segunda sentencia que es "Px" X es completamente libre de los demás ya  que no es en el ámbito de un cuantificador al igual que sus acompañantes "yz"



Referencia y ligas de interés:
http://en.wikibooks.org/wiki/Formal_Logic/Predicate_Logic/Free_and_Bound_Variables
http://en.wikipedia.org/wiki/Free_variables_and_bound_variables


domingo, 9 de septiembre de 2012

Logica predicativa

Aquí el ejercicio que me toco hacer para Verificación y Validación



"Some eggs are hard-boiled;
No eggs are uncrackable"


"Algunos huevos son duros;
No hay huevos que son irrompibles"



E(x) = eggs
H(x) = hard-boiled
U(x) = uncrackable
are = ->

Algo de teoría:


Some eggs are hard-boiled:


No eggs are uncrackable:

Entonces:
Si algunos no son duros y no rompibles no son huevos




domingo, 2 de septiembre de 2012

BDD

En esta semana nos toco realiza las siguientes actividades:

1-. Crear una expresión Booleana
2-. Realizar un BDD con la misma
3-. Reducir el BDD a un ROBDD


La expresión Booleana a verificar es la siguiente:
y(x) = [(a^b)^(bvc)]v(c^¬a)
Aquí esta la tabla de la verdad:





Posteriormente pasamos a crear la BDD, e aquí como quedo:


Posteriormente la reducimos:



Aquí una pequeña animación de como se fue reduciendo:


Ahora veamos el ROBDD con el siguiente orden  c<a<b para verificar si se redujo mas, al parecer se redujo un nodo mas:


domingo, 26 de agosto de 2012

Aplicaciones de lógica proposicional

Hoy en día nos preguntamos para que  sirven las proposiciones lógicas o la lógica en si. Pues existen  diferentes aplicaciones  y  ademas de ser bastante util en sistemas informaticos. Aquí unos cuantos ejemplos del porque debemos estudiarlo:


Problemas de clarificación mediante reglas:

Uno de los ejemplos mas sencillos es sobre las características especiales ya sean de objetos, animales, personas entre otras y por medio de la lógica proposicional sabremos quien es quien con respecto a las entradas dadas o series de reglas . Por ejemplo:


1-. Esta cosa piensa razonablemente
2-. Esta cosa tiene vida
3-. Esta cosa se mueve
4-. Esta cosa no tiene un tamaño mayor a los 2 mts de altura
5-. Esta cosa ladra
6-. Esta cosa tiene significante pelaje
7-. Esta cosa esta hecha de plástico
8-. Esta cosa hace ruido

Y con base de ciertas reglas o clasificadores como estos:

1-. Esta cosa hace ruido, no mide mas de 2 mts, tiene vida y se mueve. Entonces es humano o perro
2-. Esta cosa hace ruido, tiene tamaño inferior a dos mts no tiene vida. Entonces esto es un objeto
3-. Esta cosa tiene significante pelaje, y ladra. Entonces es perro
4-. Esta cosa piensa rasonablemente, Entonces es humano

Problemas de Búsquedas


Y a través de diferentes hechos, deducimos por medio de lógica proposicional, que si tal cosa es lo que es o descubrimos que es lo que nos mostraron o es en realidad.

Hecho1 : Hace ruido // Entonces es humano o perro u objeto
Hecho 2:  Se mueve //Entonces es humano o perro u objeto
Hecho 3 : Tiene vida: // Entonces es humano o perro pero no objeto
Hecho 3: Piensa Razonablemente  // Entonces es humano y no perro

Entonces esto es Humano


Referencia para esto: http://www.cs.us.es/~jalonso/cursos/li/temas/tema-14.pdf



Otra de las aplicaciones mas interesante es sobre algún reconocimiento de lenguaje natural humana, aunque esta tenga sus diferentes tipos de limitaciones.

En si es necesario la lógica proposicional para hacer esto, como se haria en si?'

Se necesitaría una serie de base de datos o series de reglas como en el ejemplo anterior, y dar restricciones con respecto a lo que se este hablando.

Reglas tipo:

1-. No repetir lo mismo
2-. No sonar tanto como psicológico (Esto quiere decir que en si el programa lógico haga preguntas como "Y usted como se siente con eso")

3-. Tipo de persona, ya sea genero, animo entre otras.

Hoy en día aun se sigue intentando hacer que un programa lógico trate lo mas razonablemente posible a utilizar un lenguaje mas normal que el formal.










Referencias:
http://www.cs.us.es/~jalonso/cursos/li/temas/tema-14.pdf
http://web.ing.puc.cl/~jabaier/iic2212/lp3.pdf
Imagenes:
http://engage.intel.com/servlet/JiveServlet/showImage/102-31450-2-106156/LOGICA1.JPG
http://www.robotikka.com/wp-content/uploads/2012/08/vidaartificial_clip_image002.jpg

sábado, 18 de agosto de 2012

Tautología



Mi primer intento fallido

P Q k PvQ Q^K 1v2 ¬K 3v4
0 0 0 0 0 0 1 1
0 0 1 0 0 0 0 0
0 1 0 1 0 1 1 1
0 1 1 1 0 1 0 1
1 0 0 1 0 1 1 1
1 0 1 1 0 1 0 1
1 1 0 1 1 1 1 1
1 1 1 1 1 1 0 1


Pasamos al bueno:

Exprecion de la Proposición:

P = ((PvQ)v¬(Q^K))^(Kv(Qv¬K))

Tabla de Verdad:

P
Q
k
PvQ
Q^K
¬(Q^K)
¬K
(PvQ)v¬(Q^K)
(Qv¬K)
Kv(Qv¬K)
((PvQ)v¬(Q^K))^(Kv(Qv¬K))
0
0
0
0
0
1
1
1
1
1
1
0
0
1
0
0
1
0
1
0
1
1
0
1
0
1
0
1
1
1
1
1
1
0
1
1
1
1
0
0
1
1
1
1
1
0
0
1
0
1
1
1
1
1
1
1
0
1
1
0
1
0
1
0
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1


Aquí tenemos la representación en forma de árbol




martes, 7 de agosto de 2012

Introduccion a la Verificacion y Validacion de Software

Verificación y Validación de Software



Un software listo, ideal, terminado es cuando este producto a pasado a través de diferentes tipos de prueba, además se a construido o desarrollado de manera correcta.



Que es la Validación:


Validación se refiera a las pruebas que se realiza al producto ya finalizado, en este caso el software cumple o realiza las especificaciones que pide el usuario ya teniendo el producto terminado.

De manera tradicional las pruebas que se utilizan durante el ciclo del desarrollo del software es meramente validación ya anteriormente mencionado.


Tipos de validación

Objetiva: Especificaciones formales
Interpretativa: Actividades diseñadas para corregir errores de tipo conceptual y de contexto




Métodos de validación

Informalreuniones
Testing
Pruebas de campoActuación en paralelo con experto.
Subsistemas
Análisis de sensibilidad. Sistemas con incertidumbre: cambios provocados.


Criterios de la validación:

1-. Cuántos casos de prueba.
Š2-. Cómo se generan estos casos de prueba.
3-. Establecer una proporción entre casos fáciles, medios y
difíciles.
Š4-. Cómo comparar los resultados con los de un experto.
Š5-. Cómo se mide la realización de un experto humano en ese
campo.
6-. Cómo evaluar el sistema cuando distintos expertos opinan
distintas cosas.
Š7-. Si se generan distintas respuestas cómo se consideran.


Resultados de la validación:

Exactitud u aceptabilidad de soluciones.
Š Adecuación al problema.
ŠIdentificar los diferentes tipos de errores





Que es la Verificación:



El papel de la verificación comprende comprobar que el software está de  acuerdo con su especificación. Se comprueba que el sistema cumple los  requerimientos funcionales y no funcionales que se le han especificado.


Criterios a considerar:

Consistencia
Precisión
Completud


Tipos de inconsistencias al realizar la verificación en el momento de ejecutar la verificación en alguna de las etapas:

Estructural: 
-> Si tiene alguna regla innecesaria
-> inalcanzable
-> se cicla
-> no se ejecuta
entre otras

Algunos ejemplos de errores estructurales

1-. x*y = z,   y*x = z
2-.x = z, z = y, x = y

Lógicas:
Reglas con concluciones redundantes
Las reglas ocultan otras
Reglas con conclusiones ilógicas


Semántica:
Variables con valores no validos
Incoherencia en patrones y reglas

Pasos en conjunto de la verificación y la validación:

1-. Verificar si el sistema es completo y preciso
2-. Evaluar el sistema durante el ciclo de construcción del mismo
3-.Diseñar la validación final del sistema
4-. Corregir los errores pertinentes no encontrados con anterioridad




En que nos ayuda la Verificación y la Validación?

Nos ayuda a que sean seguros los sistemas terminados, que han seguido ciertos reglamentos en el desarrollo del producto en sus diferentes etapas de construcción, además que cumplen las especificaciones requeridas.

Esto ayuda al programador a reducir el riesgo de problemas que pueda tener el producto terminado en este caso el programa hasta un cierto nivel, además de detectar diferentes tipos de errores durante la construcción del software.


La Verificación y la Validación son dos terminos en donde se suele mal interpretar en su significado.

Pruebas de Verificación y Validación del software:


Problemas que se pudieron haber evitado: 

Problema de Equipaje del aeropuerto internacional de denver




En 1994  se probo el sistema automatizado de equipaje de las cuales algunas no funcionaron como se esperaba esto por el mal administración en cada una de las fases, con ayuda de la verificación se pudo evitar el retraso de la inauguración hasta el 2005 y el gasto innecesario de los recursos



Referencias:

http://www.buzzle.com/editorials/4-5-2005-68117.asp
http://www.giaa.inf.uc3m.es/docencia/II/IConocimiento/tema6.pdf
http://www.ctr.unican.es/asignaturas/Ingenieria_Software_4_F/Doc/M7_09_VerificacionValidacion-2011.pdf

http://www.scribd.com/doc/79808328/BAE1