Fixed pattern matching, now the test in Abs works correctly.
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Tue, 09 Feb 2010 10:48:42 +0100
changeset 1090 de2d1929899f
parent 1089 66097fe4942a
child 1091 d3946f1a9341
Fixed pattern matching, now the test in Abs works correctly.
Quot/Nominal/Abs.thy
Quot/quotient_term.ML
--- a/Quot/Nominal/Abs.thy	Mon Feb 08 13:50:52 2010 +0100
+++ b/Quot/Nominal/Abs.thy	Tue Feb 09 10:48:42 2010 +0100
@@ -226,7 +226,6 @@
 
 (* TEST case *)
 lemmas abs_induct2 = prod.induct[where 'a="atom set" and 'b="'a::pt", quot_lifted]
-
 thm abs_induct abs_induct2
 
 instantiation abs :: (pt) pt
--- a/Quot/quotient_term.ML	Mon Feb 08 13:50:52 2010 +0100
+++ b/Quot/quotient_term.ML	Tue Feb 09 10:48:42 2010 +0100
@@ -694,7 +694,7 @@
    by appropriate qty, with substitution *)
 fun subst_ty thy ty (rty, qty) r =
   if r <> NONE then r else
-  case try (Sign.typ_match thy (ty, rty)) Vartab.empty of
+  case try (Sign.typ_match thy (rty, ty)) Vartab.empty of
     SOME inst => SOME (Envir.subst_type inst qty)
   | NONE => NONE
 fun subst_tys thy substs ty =
@@ -711,7 +711,7 @@
    them matched it returns NONE. *)
 fun subst_trm thy t (rtrm, qtrm) s =
   if s <> NONE then s else
-    case try (Pattern.match thy (t, rtrm)) (Vartab.empty, Vartab.empty) of
+    case try (Pattern.match thy (rtrm, t)) (Vartab.empty, Vartab.empty) of
       SOME inst => SOME (Envir.subst_term inst qtrm)
     | NONE => NONE;
 fun subst_trms thy substs t = fold (subst_trm thy t) substs NONE