equal
deleted
inserted
replaced
196 case (head_of t) of |
196 case (head_of t) of |
197 Var _ => if unif then net_skip (net,nets) |
197 Var _ => if unif then net_skip (net,nets) |
198 else var::nets (*only matches Var in net*) |
198 else var::nets (*only matches Var in net*) |
199 (*If "unif" then a var instantiation in the abstraction could allow |
199 (*If "unif" then a var instantiation in the abstraction could allow |
200 an eta-reduction, so regard the abstraction as a wildcard.*) |
200 an eta-reduction, so regard the abstraction as a wildcard.*) |
201 | Abs _ => if unif then net_skip (net,nets) |
201 | Abs(_,_,u) => (case u of |
202 else var::nets (*only a Var can match*) |
202 f $ Bound 0 => if loose_bvar1(f,0) then var::nets |
|
203 else matching unif f (net,nets) |
|
204 | _ => if unif then net_skip (net,nets) |
|
205 else var::nets) (*only a Var can match*) |
203 | _ => rands t (net, var::nets) (*var could match also*) |
206 | _ => rands t (net, var::nets) (*var could match also*) |
204 end; |
207 end; |
205 |
208 |
206 fun extract_leaves l = List.concat (map (fn Leaf(xs) => xs) l); |
209 fun extract_leaves l = List.concat (map (fn Leaf(xs) => xs) l); |
207 |
210 |