1 | 1. t: Term 2. u: TermType{i'} 3. w: t:{v:Term| u(v) }s:SimpleType, as:(LabelTerm) List, ds:Collection{i}(dec()) , da:Collection{i}(SimpleType), de:sig(). s term_types(ds;da;de;t) (x:Label. (x term_vars(t)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) s term_types(ds;da;de;term_subst(as;t)) 4. x: Label s:SimpleType, as:(LabelTerm) List, ds:Collection{i}(dec()), da:Collection{i}(SimpleType) , de:sig(). s dec_lookup(ds;x) (x@0:Label. (x@0 [x]) (t:SimpleType. mk_dec(x@0, t) ds t term_types(ds;da;de;apply_alist(as;x@0;x@0)))) s term_types(ds;da;de;apply_alist(as;x;x')) |
2 | 1. t: Term 2. u: TermType{i'} 3. w: t:{v:Term| u(v) }s:SimpleType, as:(LabelTerm) List, ds:Collection{i}(dec()) , da:Collection{i}(SimpleType), de:sig(). s term_types(ds;da;de;t) (x:Label. (x term_vars(t)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) s term_types(ds;da;de;term_subst(as;t)) 4. y1: {v:Term| u(v) } 5. y2: {v:Term| u(v) } s:SimpleType, as:(LabelTerm) List, ds:Collection{i}(dec()), da:Collection{i}(SimpleType) , de:sig(). s st_app(term_types(ds;da;de;y1);term_types(ds;da;de;y2)) (x:Label. (x term_vars(y1) @ term_vars(y2)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) s st_app(term_types(ds;da;de;term_subst(as;y1));term_types(ds;da;de;term_subst(as;y2))) |
About: