src/HOL/Tools/TFL/tfl.ML
changeset 51930 52fd62618631
parent 51717 9e7d1c139569
child 54742 7a86358a3c0b
equal deleted inserted replaced
51929:5e8a0b8bb070 51930:52fd62618631
   602 fun alpha_ex_unroll (xlist, tm) =
   602 fun alpha_ex_unroll (xlist, tm) =
   603   let val (qvars,body) = USyntax.strip_exists tm
   603   let val (qvars,body) = USyntax.strip_exists tm
   604       val vlist = #2 (USyntax.strip_comb (USyntax.rhs body))
   604       val vlist = #2 (USyntax.strip_comb (USyntax.rhs body))
   605       val plist = ListPair.zip (vlist, xlist)
   605       val plist = ListPair.zip (vlist, xlist)
   606       val args = map (the o AList.lookup (op aconv) plist) qvars
   606       val args = map (the o AList.lookup (op aconv) plist) qvars
   607                    handle Option => raise Fail "TFL.alpha_ex_unroll: no correspondence"
   607                    handle Option.Option => raise Fail "TFL.alpha_ex_unroll: no correspondence"
   608       fun build ex      []   = []
   608       fun build ex      []   = []
   609         | build (_$rex) (v::rst) =
   609         | build (_$rex) (v::rst) =
   610            let val ex1 = Term.betapply(rex, v)
   610            let val ex1 = Term.betapply(rex, v)
   611            in  ex1 :: build ex1 rst
   611            in  ex1 :: build ex1 rst
   612            end
   612            end