comparison src/Extensional.v @ 221:54e8ecb5ec88

Port Reflection
author Adam Chlipala <adamc@hcoop.net>
date Mon, 16 Nov 2009 11:09:47 -0500
parents d1464997078d
children 4b73ea13574d
comparison
equal deleted inserted replaced
220:15501145d696 221:54e8ecb5ec88
485 Notation "'Inr' e" := (EInr e) (at level 71) : source_scope. 485 Notation "'Inr' e" := (EInr e) (at level 71) : source_scope.
486 486
487 Delimit Scope source_scope with source. 487 Delimit Scope source_scope with source.
488 Bind Scope source_scope with exp. 488 Bind Scope source_scope with exp.
489 489
490 Open Local Scope source_scope. 490 Local Open Scope source_scope.
491 491
492 Fixpoint typeDenote (t : type) : Set := 492 Fixpoint typeDenote (t : type) : Set :=
493 match t with 493 match t with
494 | Unit => unit 494 | Unit => unit
495 | t1 --> t2 => typeDenote t1 -> typeDenote t2 495 | t1 --> t2 => typeDenote t1 -> typeDenote t2
726 End choice_tree. 726 End choice_tree.
727 727
728 Implicit Arguments merge [var t result]. 728 Implicit Arguments merge [var t result].
729 729
730 Section elaborate. 730 Section elaborate.
731 Open Local Scope elab_scope. 731 Local Open Scope elab_scope.
732 732
733 Fixpoint elaboratePat var t1 ts result (p : pat t1 ts) {struct p} : 733 Fixpoint elaboratePat var t1 ts result (p : pat t1 ts) {struct p} :
734 (hlist (exp var) ts -> result) -> result -> choice_tree var t1 result := 734 (hlist (exp var) ts -> result) -> result -> choice_tree var t1 result :=
735 match p in (pat t1 ts) return ((hlist (exp var) ts -> result) 735 match p in (pat t1 ts) return ((hlist (exp var) ts -> result)
736 -> result -> choice_tree var t1 result) with 736 -> result -> choice_tree var t1 result) with