Welcome to the online reference for our ITP2015 paper
"ROSCoq : Robots powered by Constructive Reals"
This page guides the reader to key parts of our development:
The contents below reflect the state of ROSCoq at the submission of the ITP15 paper.
For the latest and greatest, please visit the ROSCOQ wiki at github.
Physical Aspects :
Cyber Aspects :
core.v : defintion of time (Time, QTime),
continuous functions over time (TContR),
derivatives w.r.t. time (isDerivativeOf
and many lemmas about bounds on functions based on bounds on their derivatives at
rational values of time (e.g. TDerivativeLBQ,
CartCR.v : conversion between cartesian and polar coordinates, proofs of correctness of the conversions
definition of coordinates after that the axes are rotated such that the new X axis
is in the direction of a given point
the derivative of the new coordinates in terms of the derivatives of the old coordinates
Cyber-physical Aspects :
MsgHandler.v : definiton of a message handler with state, lemmas characterizing its state and output after a handling a finite sequence of mesages
- roscore.v : definition of topics, messages and software agents
Applications of the framework :
definition of events, causal ordering, semantics of agents, derivation of semantics of a software agent from its
Coq program (SwSemantics),
definition and correctness proofs of utility functions which find latest payload on a topic
robots/icreate.v : specification of an increate robot.
It incudes the definition of its physical model,
and the specification of the behavior of its behaviour as a hardware agent.
examples/iCreateMoveToLoc.v : instantiation
of the above abstract definition of a CPS
to specify running example of paper.
It incudes the Coq program run
by the software agent and a specification of the external agent.
After specification, bounds are derived on how close the robot will be to the position it is asked to be at.
Main lemmas are:
We used a ROSJava shim to run a specialization
the above Coq program on actual robots.
working on iCreate, we formalized a CPS representing
the case of a hypothetical train traveling back and forth
repeatedly between two stations. This CPS has 3 hardware agents : a proximity
sensor (ProximitySensor) at each end of the train and a motor at the base for 1D motion. The
software controller uses messages generated by the proximity sensor to reverse
the direction of motion when it comes close to an endpoint. We proved that it
will never collide with an endpoint (TrainSafe).
- Slides from a talk at
the ITP 2015
- ROSCoq development and documentation (wiki) is now available at github