-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Description
Based on the description of the plugin in [1], I expected it to not need any user input when translating closed terms. However, sometimes, it leaves me with strange proof obligations.
Why does this happen? Is there a way to ensure that no user input is needed for closed terms?
Here is an example where user imput is needed:
Require Import NPeano.
Require Import Recdef.
Set Implicit Arguments.
Require Import Omega.
Function Gcd (a b : nat) {wf lt a} : nat :=
match a with
| O => b
| S k => Gcd (b mod S k) (S k)
end
.
Proof.
- intros m n k Heq. subst. apply Nat.mod_upper_bound.
omega.
- exact lt_wf.
Defined.
Declare ML Module "paramcoq".
Parametricity Recursive Gcd.
intros.
destruct n.
- simpl. reflexivity.
- destruct m; simpl; reflexivity.
Parametricity Done.
... (* more obligations *)
Metadata
Metadata
Assignees
Labels
No labels