@@ -517,6 +517,7 @@ data PTerm = PQuote Raw
517 | PElabError Err -- ^ Error to report on elaboration
517 | PElabError Err -- ^ Error to report on elaboration
518 | PImpossible -- ^ Special case for declaring when an LHS can't typecheck
518 | PImpossible -- ^ Special case for declaring when an LHS can't typecheck
519 | PCoerced PTerm -- ^ To mark a coerced argument, so as not to coerce twice
519 | PCoerced PTerm -- ^ To mark a coerced argument, so as not to coerce twice
520+ | PUnifyLog PTerm -- ^ dump a trace of unifications when building term
520 deriving Eq
521 deriving Eq
522deriving instance Binary PTerm
523deriving instance Binary PTerm
@@ -539,6 +540,7 @@ mapPT f t = f (mpt t) where
539 mpt (PDoBlock ds) = PDoBlock (map (fmap (mapPT f)) ds)
540 mpt (PDoBlock ds) = PDoBlock (map (fmap (mapPT f)) ds)
540 mpt (PProof ts) = PProof (map (fmap (mapPT f)) ts)
541 mpt (PProof ts) = PProof (map (fmap (mapPT f)) ts)
541 mpt (PTactics ts) = PTactics (map (fmap (mapPT f)) ts)
542 mpt (PTactics ts) = PTactics (map (fmap (mapPT f)) ts)
543+ mpt (PUnifyLog tm) = PUnifyLog (mapPT f tm)
542 mpt x = x
544 mpt x = x
@@ -1084,6 +1086,7 @@ showImp impl tm = se 10 tm where
1084 se p (PDoBlock _) = "do block show not implemented"
1086 se p (PDoBlock _) = "do block show not implemented"
1085 se p (PElabError s) = show s
1087 se p (PElabError s) = show s
1086 se p (PCoerced t) = se p t
1088 se p (PCoerced t) = se p t
1089+ se p (PUnifyLog t) = "%unifyLog " ++ se p t
1087-- se p x = "Not implemented"
1090-- se p x = "Not implemented"
1089 slist' p (PApp _ (PRef _ nil) _)
1092 slist' p (PApp _ (PRef _ nil) _)
@@ -1150,6 +1153,7 @@ instance Sized PTerm where
1150 size (PDPair fs left ty right) = 1 + size left + size ty + size right
1153 size (PDPair fs left ty right) = 1 + size left + size ty + size right
1151 size (PAlternative a alts) = 1 + size alts
1154 size (PAlternative a alts) = 1 + size alts
1152 size (PHidden hidden) = size hidden
1155 size (PHidden hidden) = size hidden
1156+ size (PUnifyLog tm) = size tm
1153 size PType = 1
1157 size PType = 1
1154 size (PConstant const) = 1 + size const
1158 size (PConstant const) = 1 + size const
1155 size Placeholder = 1
1159 size Placeholder = 1
@@ -1184,6 +1188,7 @@ allNamesIn tm = nub $ ni [] tm
1184 ni env (PDPair _ (PRef _ n) t r) = ni env t ++ ni (n:env) r
1188 ni env (PDPair _ (PRef _ n) t r) = ni env t ++ ni (n:env) r
1185 ni env (PDPair _ l t r) = ni env l ++ ni env t ++ ni env r
1189 ni env (PDPair _ l t r) = ni env l ++ ni env t ++ ni env r
1186 ni env (PAlternative a ls) = concatMap (ni env) ls
1190 ni env (PAlternative a ls) = concatMap (ni env) ls
1191+ ni env (PUnifyLog tm) = ni env tm
1187 ni env _ = []
1192 ni env _ = []
1189-- Return names which are free in the given term.
1194-- Return names which are free in the given term.
@@ -1208,6 +1213,7 @@ namesIn uvars ist tm = nub $ ni [] tm
1208 ni env (PDPair _ l t r) = ni env l ++ ni env t ++ ni env r
1213 ni env (PDPair _ l t r) = ni env l ++ ni env t ++ ni env r
1209 ni env (PAlternative a as) = concatMap (ni env) as
1214 ni env (PAlternative a as) = concatMap (ni env) as
1210 ni env (PHidden tm) = ni env tm
1215 ni env (PHidden tm) = ni env tm
1216+ ni env (PUnifyLog tm) = ni env tm
1211 ni env _ = []
1217 ni env _ = []
1213-- Return which of the given names are used in the given term.
1219-- Return which of the given names are used in the given term.
@@ -1232,4 +1238,5 @@ usedNamesIn vars ist tm = nub $ ni [] tm
1232 ni env (PDPair _ l t r) = ni env l ++ ni env t ++ ni env r
1238 ni env (PDPair _ l t r) = ni env l ++ ni env t ++ ni env r
1233 ni env (PAlternative a as) = concatMap (ni env) as
1239 ni env (PAlternative a as) = concatMap (ni env) as
1234 ni env (PHidden tm) = ni env tm
1240 ni env (PHidden tm) = ni env tm
1241+ ni env (PUnifyLog tm) = ni env tm
1235 ni env _ = []
1242 ni env _ = []