@@ -641,6 +641,14 @@ whereSyn n syn args = let ns = concatMap allNamesIn args
641641pArgExpr syn = let syn' = syn { inPattern = True } in
642642 try (pHSimpleExpr syn') <|> pSimpleExtExpr syn'
643643
644+pRHS :: SyntaxInfo -> Name -> IParser PTerm
645+pRHS syn n = do lchar '='; pExpr syn
646+ <|> do symbol "?="; rhs <- pExpr syn;
647+ return (PLet (UN ["value"]) Placeholder rhs (PMetavar n'))
648+ where n' = case n of
649+ UN [x] -> UN [x++"_lemma_1"]
650+ x -> x
651+
644652pClause :: SyntaxInfo -> IParser PClause
645653pClause syn
646654 = try (do n <- pfName
@@ -649,8 +657,7 @@ pClause syn
649657 fc <- pfc
650658 args <- many (pArgExpr syn)
651659 wargs <- many (pWExpr syn)
652− lchar '='
653− rhs <- pExpr syn
660+ rhs <- pRHS syn n
654661 ist <- getState
655662 let ctxt = tt_ctxt ist
656663 let wsyn = whereSyn n syn (map getTm iargs ++
@@ -681,8 +688,7 @@ pClause syn
681688 r <- pArgExpr syn
682689 fc <- pfc
683690 wargs <- many (pWExpr syn)
684− lchar '='
685− rhs <- pExpr syn
691+ rhs <- pRHS syn n
686692 let wsyn = whereSyn n syn []
687693 (wheres, nmap) <- choice [pWhereblock n syn, do lchar ';'
688694 return ([], [])]