Je me demande s'il est possible de retirer cette correspondance de motif dépendant. Comme vous le voyez, j'essaie de mapper plusieurs valeurs à nul
(et d'indiquer à la sortie d'avoir le type requis avec une clause return
). Type N
est un éboueur, je suis tout simplement essayer de se débarrasser de toutes les valeurs aprèsCoq: Problème avec correspondance de motif dépendant
| P, c => phy
| P, b => phy
| Ii, b => inf
(Dans ce contexte particulier, en utilisant un type option
semblait très difficile à manier.) Notez que si Coercion
est impossible ici, Je serais aussi heureux w/Definition
Inductive R := P | Ii | S | N.
Parameter rp:> R -> Prop.
Inductive X: Type := | c {z:P} :> X | b {z:P} {y:Ii} :> X.
Parameter (phy:P) (inf:Ii) (sen:S) (nul:N).
Check phy: id P.
Fail Coercion xi(y:R)(x:X): id y := match y, x with
| P, c => phy
| P, b => phy
| Ii, b => inf
| _, _ => match _ return N with _ => nul end end.
(* The term "nul" has type "rp N" while it is expected to have type "rp Ii". *)
bien qui ne fait pas de ense, évidemment il y a beaucoup de cas qui seront typés différemment de 'N', comme' Ii, c' qui attend quelque chose de type 'Ii' (par votre clause de retour). – ejgallego
@ejgallego: Vous avez probablement voulu dire "par' id y' ", pas" par la clause de retour "(' return N'). Y a-t-il une alternative qui pourrait fonctionner? Il peut falloir plus d'une définition, mais la dernière devrait se terminer par w/mappings à 'phy',' inf' et ordures – jaam