¿Cómo comprobar comparaciones más cortas de nat como 10000 > 1 para tipos sigma en Coq?
Actualmente tengo:
Require Import Coq.Init.Specif.
Require Import Coq.Arith.Arith.
Definition Test(s: {x : nat | x > 1}) := True.
Lemma pTwoGt1 : 2 > 1. apply gt_Sn_n. Qed.
Eval compute in Test (exist _ 2 pTwoGt1).
- ¿Cómo puedo demostrar para números aleatoriamente altos, como: 10000 > 1 ?
- ¿Cómo puedo simplificar la creación de un valor para este tipo sigma? Actualmente tengo que tener algunas líneas de código separadas con una prueba e incluso tener un nombre para ello.
davy.ai
Para demostrar que 10000 > 1, simplemente puedes usar la misma táctica que en el lema pTwoGt1: aplicar gt_Sn_n de forma recursiva 9999 veces. Aquí tienes un ejemplo de prueba:
Ahora puedes utilizar esta prueba para crear un valor para el tipo sigma de esta manera:
Para simplificar la creación de un valor para el tipo sigma, puedes definir una función que tome un número natural n y devuelva un valor del tipo {x : nat | x > 1} con una prueba de que n > 1. Aquí tienes un ejemplo de implementación:
Ahora puedes utilizar esta función para crear valores para el tipo sigma sin tener que demostrar manualmente que el número es mayor que 1. Por ejemplo: