La respuesta corta es "verificar las propiedades adicionales del código existente". La respuesta más larga sigue.
No estoy seguro de que "implícito" vs "explícito" sea una buena terminología. Esta distinción a veces se denomina subtipo "estructural" frente a subtipo "nominal". Luego, también hay una segunda distinción en las posibles interpretaciones del subtipo estructural (descrito en breve). Tenga en cuenta que las tres interpretaciones del subtipo realmente son ortogonales, por lo que no tiene sentido compararlas entre sí, en lugar de comprender los usos de cada una.
La principal distinción operativa al interpretar una relación de subtipo estructural A <: B es si es presenciada por una coerción real con contenido computacional (tiempo de ejecución / tiempo de compilación), o si puede ser presenciada por la coerción de identidad. Si es lo primero, la propiedad teórica importante que debe tener es la "coherencia", es decir, si hay múltiples formas de demostrar que A es un subtipo subestructural de B, cada una de las coacciones que la acompañan deben tener el mismo contenido computacional.
El enlace que proporcionó parece tener en mente la segunda interpretación del subtipo estructural, donde A <: B puede ser testigo de la coerción de identidad. Esto a veces se llama una "interpretación de subconjunto" de subtipo, tomando la visión ingenua de que un tipo representa un conjunto de valores, por lo que A <: B en caso de que cada valor de tipo A sea también un valor de tipo B. También es a veces llamado "mecanografía de refinamiento", y un buen artículo para leer sobre la motivación original es Freeman & Pfenning's tipos de refinamiento de para ML . Para una encarnación más reciente en F #, puede leer Bengston et al, Tipos de refinamiento para implementaciones seguras. La idea básica es tomar un lenguaje de programación existente que puede (o no) tener tipos pero en el que los tipos no garantizan tanto (por ejemplo, solo seguridad de memoria), y considerar una segunda capa de tipos seleccionando subconjuntos de programas con propiedades adicionales más precisas.
(Ahora, diría que la teoría matemática detrás de esta interpretación del subtipo todavía no se entiende tan bien como debería ser, y tal vez sea porque sus usos no son tan apreciados como deberían ser. Un problema es que el "conjunto la interpretación de los tipos de valores "es demasiado ingenua y, por lo tanto, a veces se abandona en lugar de refinarse. Para otro argumento de que esta interpretación del subtipo merece más atención matemática, lea la introducción a Subspaces de Paul Taylor en la dualidad abstracta de piedra" .