Mercurial > urweb
changeset 619:f38e009009bb
Time to start thinking about guards
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sat, 21 Feb 2009 13:22:30 -0500 |
parents | be88d2d169f6 |
children | d828b143e147 |
files | src/coq/Semantics.v src/coq/Syntax.v |
diffstat | 2 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/coq/Semantics.v Sat Feb 21 13:17:06 2009 -0500 +++ b/src/coq/Semantics.v Sat Feb 21 13:22:30 2009 -0500 @@ -209,5 +209,21 @@ | right _ => fun x => x end ((eDen e1) n) + | Concat c1 c2 e1 e2 => fun n => + match (cDen c1) n as D return match D with + | None => unit + | Some T => T + end + -> match (match D with + | None => (cDen c2) n + | v => v + end) with + | None => unit + | Some T => T + end with + | None => fun _ => (eDen e2) n + | _ => fun x => x + end ((eDen e1) n) + | _ => cheat _ end.
--- a/src/coq/Syntax.v Sat Feb 21 13:17:06 2009 -0500 +++ b/src/coq/Syntax.v Sat Feb 21 13:22:30 2009 -0500 @@ -187,6 +187,6 @@ | Single : forall c t, exp t -> exp (TRecord (CConcat (CSingle c t) (CEmpty _))) | Proj : forall c t c', exp (TRecord (CConcat (CSingle c t) c')) -> exp t | Cut : forall c t c', disj (CSingle c t) c' -> exp (TRecord (CConcat (CSingle c t) c')) -> exp (TRecord c') - | Concat : forall c1 c2, disj c1 c2 -> exp (TRecord c1) -> exp (TRecord c2) -> exp (TRecord (CConcat c1 c2)) + | Concat : forall c1 c2, exp (TRecord c1) -> exp (TRecord c2) -> exp (TRecord (CConcat c1 c2)) | Guarded : forall k (c1 c2 : con (KRecord k)) c, (dvar c1 c2 -> exp c) -> exp (CGuarded c1 c2 c). End vars.