anchor.diff:          let ((mvs2, insts2), gls2, just2) = seqapply tacl gls1
           let jst = justsequence just1 just2 insts2
           let just = 
  -            if gls2 = []
  -            then propagate_thm(jst null_inst [])
  +            if gls2 = [] then 
  +                propagate_thm(jst null_inst [])
               else jst
           ((union mvs1 mvs2, compose_insts insts1 insts2), gls2, just)
       let then_ : tactic -> tactic -> tactic = 
  
positive.code: 
  /// Apply a theorem-tactic to the the first assumption equal to given term.
  let (FIND_ASSUM : thm_tactic -> term -> tactic) = 
      fun ttac t ((asl, w) as g) -> ttac (snd(Option.get <| find (fun (_, th) -> concl <| Choice.get th = t) asl)) g
  
  /// Applies tactic generated from the first element of a goal's assumption list.
  let (POP_ASSUM : thm_tactic -> tactic) = 
  
negative.code: let (USE_THEN : string -> thm_tactic -> tactic) = 
      fun s ttac (asl, w as gl) -> 
          let th =            
              match assoc s asl with
              | Some thm -> thm
              | None -> Choice.failwith ("USE_TAC: didn't find assumption " + s)
  
          ttac th gl
  
  