sistema.tex 6.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. \begin{problema}{crearS}{c: Campo, ds: [Drone]}{Sistema}
  2. \asegura{igualdadCamapo(campo(res),c)}
  3. \asegura{(\forall d \leftarrow ds)(\exists d' \leftarrow enjambreDrones(s))id(d)==id(d') \wedge bateria(d')==100 \wedge \neg enVuelo(d') \wedge \newline enRango(dimesiones(campo(res)), prs(posicionActual(d')),snd(posicionActual(d'))) \wedge \newline contenido(campo(res), prs(posicionActual(d')),snd(posicionActual(d')))==Granero}
  4. \end{problema}
  5. \begin{problema}{campoS}{s: Sistema}{Campo}
  6. \asegura {res==campo(s)}
  7. \end{problema}
  8. \begin{problema}{estadoDelCultivoS}{s: Sistema, i, j: \ent}{EstadoCultivo}
  9. \requiere {enRango(dimensiones(campo(s)),i,j) \wedge contenido(campo(s),i,j)==cultivo}
  10. \asegura {res==estadoDelCultivo(s,i,j)}
  11. \end{problema}
  12. \begin{problema}{enjambreDronesS}{s: Sistema}{[Drone]}
  13. \asegura{mismos(res,enjambreDrones(s))}
  14. \end{problema}
  15. \begin{problema}{crecerS}{s: Sistema}{}
  16. \modifica s
  17. \asegura{igualdadCampo(campo(s),campo(pre(s)))}
  18. \asegura{ mismosDrones(enjambreDrones(s),enjambreDrones(pre(s)))}
  19. \asegura{(\forall i \leftarrow [0..prs(dimensiones(s)),j \leftarrow [0..snd(dimensiones(s)), enRango(dimensiones(campo(s)),i,j), \newline contenido(campo(s),i,j)==Cultivo, estadoDelCultivo(pre(s),i,j)==RecienSembrado )\newline estadoDelCultivo(s,i,j)==EnCrecimiento }
  20. \asegura{(\forall i \leftarrow [0..prs(dimensiones(s)),j \leftarrow [0..snd(dimensiones(s)), enRango(dimensiones(campo(s)),i,j), \newline contenido(campo(s),i,j)==Cultivo, estadoDelCultivo(pre(s),i,j)==EnCrecimiento ) \newline estadoDelCultivo(s,i,j)==ListoParaCosechar}
  21. \asegura {(\forall i \leftarrow [0..prs(dimensiones(s)),j \leftarrow [0..snd(dimensiones(s)), enRango(dimensiones(campo(s)),i,j), \newline contenido(campo(s),i,j)==Cultivo, (estadoDelCultivo(pre(s),i,j)\neq EnCrecimiento \wedge \newline estadoDelCultivo(pre(s),i,j)\neq RecienSembrado )) \newline estadoDelCultivo(s,i,j)==estadoDelCultivo(pre(s),i,j)}
  22. \end{problema}
  23. \begin{problema}{seVinoLaMalezaS}{s: Sistema, ps: [(\ent, \ent)]}{}
  24. % \requiere{(\forall p \leftarrow ps) enRango(dimensiones(campo(pre(s)),prs(p),snd(p))) \wedge \newline contenido(campo(pre(s)),prs(p),sgd(p))==Cultivo}
  25. \modifica s
  26. \asegura{igualdadCampo(campo(s),campo(pre(s)))}
  27. \asegura{ mismosDrones(enjambreDrones(s),enjambreDrones(pre(s)))}
  28. \asegura{(\forall i \leftarrow [0..prs(dimensiones(campo(s))), j \leftarrow [0..snd(dimensiones(campo(s))), \newline contenido(campo(s),i,j)!=Cultivo \wedge (i,j) \notin ps) contenido(campo(s),i,j)==contenido(campo(pre(s)),i,j)}
  29. %si no es cultivo, lo dejo igual
  30. \asegura{(\forall i \leftarrow [0..prs(dimensiones(campo(s))), j \leftarrow [0..snd(dimensiones(campo(s))), \newline contenido(campo(s),i,j)==Cultivo \wedge (i,j) \notin ps) estadoDelCultivo(s,i,j)==estadoDelCultivo(pre(s),i,j)}
  31. %si es cultivo y no esta en ps lo dejo igual
  32. \asegura{(\forall p \leftarrow ps)estadoDelCultivo(s,prs(p),snd(p))==ConMaleza}
  33. %le pongo maleza
  34. \end{problema}
  35. \begin{problema}{seExpandePlagaS}{s: Sistema}{}
  36. \modifica s
  37. \asegura{igualdadCampo(campo(s),campo(pre(s)))}
  38. \asegura{mismosDrones(enjambreDrones(s),enjambreDrones(pre(s)))}
  39. \asegura{(\forall i \leftarrow [0..prs(dimensiones(campo(pre(s)))), j \leftarrow [0..snd(dimensiones(campo(pre(s))))\newline contenido(campo(pre(s)),i,j) \wedge estadoDelCultivo(pre(s),i,j)==ConPlaga)\newline estadoDelCultivo(s,i,j)==ConPlaga \wedge parcelaAdyacenteConPlaga(s,i,j)}
  40. \asegura{(\forall i \leftarrow [0..prs(dimensiones(campo(pre(s)))), j \leftarrow [0..snd(dimensiones(campo(pre(s))))\newline contenido(campo(pre(s)),i,j)==Cultivo \wedge estadoDelCultivo(pre(s),i,j)\neq ConPlaga \wedge \newline \neg algunAdyacenteConPlaga(s,i,j)) estadoDelCultivo(s,i,j)==estadoDelCultivo(pre(s),i,j)}
  41. \end{problema}
  42. \begin{problema}{despegarS}{s: Sistema, d: Drone}{}
  43. \requiere{bateria(d)==100}
  44. \requiere{d \in enjambreDrones(pre(s))}
  45. \requiere{hayParcelaAdyacenteAlGraneroLibre(pre(s))}
  46. \modifica s
  47. \asegura{igualdadCampo(campo(pre(s)),campo(s))}
  48. \asegura{(\forall(i,j) \leftarrow parcelasDelSistema(s),contenido(campo(s),i,j)==Cultivo)\newline estadoDelCultivo(pre(s),i,j)==estadoDelCultivo(s,i,j)}
  49. \asegura{\mid enjambreDrones(pre(s)) \mid == \mid enjambreDrones(s) \mid}
  50. \asegura{(\forall d' \leftarrow enjambreDrones(pre(s)), id(d')==id(d))(\exists d'' \leftarrow enjambreDones(s))igualdadDrones(d',d'')}
  51. \asegura{(\exists d' \leftarrow enjambreDrones(s))id(d)==id(d') \wedge enVuelo(d') \wedge bateria(d')==99 \wedge \newline enRango(dimensiones(s),prs(posicionActual(d')),snd(posicionActual(d'))) \wedge \newline soloUnDrone(s,posicionActual(d')) \wedge estaAdyacenteAlGranero(s,(posicionActual(d')) \wedge \newline vueloRealizado(d')==[posicionActual(d')] \wedge mismos(productosDisponibles(d),productosDisponibles(d'))}
  52. \end{problema}
  53. \begin{problema}{listoParaCosecharS}{s: Sistema}{\bool}
  54. \asegura { res == ( contarCultivosListos/contarCultivos(s) \geq 0.9 ) }
  55. \begin{aux}{contarCultivos}{s: Sistema}{\ent}
  56. { |[ 1 | \newline i \leftarrow [0..prs(dimensiones(campo(s))) \newline j \leftarrow [0..snd(dimensiones(campo(s))), \newline contenido(campo(s),i,j)==Cultivo) ]| }
  57. \end{aux}
  58. \begin{aux}{contarCultivosListos}{s: Sistema}{\ent}
  59. { |[ 1 | \newline i \leftarrow [0..prs(dimensiones(campo(s))) \newline j \leftarrow [0..snd(dimensiones(campo(s))), \newline contenido(campo(s),i,j)==Cultivo \wedge
  60. estadoDelCultivo(s,i,j) == ListoParaCosechar ) ]| }
  61. \end{aux}
  62. \end{problema}
  63. \begin{problema}{aterrizarYCargarBateriaS}{s: Sistema, b: \ent}{}
  64. \end{problema}
  65. \begin{problema}{fertilizarPorFilas}{s: Sistema}{}
  66. \modifica s \asegura{ (\forall(d) \leftarrow enjambreDrones(pre(s)), !puedeMoverOeste(d)) igualdadDrone(d,pre(d)) }
  67. \asegura{ (\forall(d) \leftarrow enjambreDrones(pre(s)), puedeMoverOeste(d))
  68. \newline dronesIgualesSinPosicion(d,pre(d)) \wedge \newline posicionActual(d)==(pri(posicionActual(pre(d)-1)),sgd(posicionActual(pre(d))))
  69. }
  70. \begin{aux}{puedeMoverOeste}{d: Drone, s:Sistema}{\bool}{
  71. \newline
  72. \IfThenElse{ bateria(d) == 0 \vee noTieneFertilizante(d) \vee \newline contenido(campo(pre(s)),pri(posicionActual(d)),sgd(posicionActual(d))) \neq Cultivo \vee \newline pri(posicionActual(d)) == 0 }{\newline False \newline }{\newline True}
  73. }
  74. \end{aux}
  75. \end{problema}
  76. \begin{problema}{volarYSensarS}{s: Sistema, d: Drone}{}
  77. \end{problema}