src/Pure/net.ML
changeset 16986 68bc6dbea7d6
parent 16938 04bdd18e0ad1
child 17221 6cd180204582
equal deleted inserted replaced
16985:7df8abe926c3 16986:68bc6dbea7d6
    46 *)
    46 *)
    47 fun add_key_of_terms (t, cs) =
    47 fun add_key_of_terms (t, cs) =
    48   let fun rands (f$t, cs) = CombK :: rands (f, add_key_of_terms(t, cs))
    48   let fun rands (f$t, cs) = CombK :: rands (f, add_key_of_terms(t, cs))
    49         | rands (Const(c,_), cs) = AtomK c :: cs
    49         | rands (Const(c,_), cs) = AtomK c :: cs
    50         | rands (Free(c,_),  cs) = AtomK c :: cs
    50         | rands (Free(c,_),  cs) = AtomK c :: cs
    51         | rands (Bound i,  cs)   = AtomK (Term.bound i "") :: cs
    51         | rands (Bound i,  cs)   = AtomK (Term.bound i) :: cs
    52   in case (head_of t) of
    52   in case (head_of t) of
    53       Var _ => VarK :: cs
    53       Var _ => VarK :: cs
    54     | Abs _ => VarK :: cs
    54     | Abs _ => VarK :: cs
    55     | _     => rands(t,cs)
    55     | _     => rands(t,cs)
    56   end;
    56   end;
   179         | rands t (Net{comb,atoms,...}, nets) =
   179         | rands t (Net{comb,atoms,...}, nets) =
   180             case t of
   180             case t of
   181                 f$t => foldr (matching unif t) nets (rands f (comb,[]))
   181                 f$t => foldr (matching unif t) nets (rands f (comb,[]))
   182               | Const(c,_) => look1 (atoms, c) nets
   182               | Const(c,_) => look1 (atoms, c) nets
   183               | Free(c,_)  => look1 (atoms, c) nets
   183               | Free(c,_)  => look1 (atoms, c) nets
   184               | Bound i    => look1 (atoms, Term.bound i "") nets
   184               | Bound i    => look1 (atoms, Term.bound i) nets
   185               | _          => nets
   185               | _          => nets
   186   in
   186   in
   187      case net of
   187      case net of
   188          Leaf _ => nets
   188          Leaf _ => nets
   189        | Net{var,...} =>
   189        | Net{var,...} =>