src/Pure/tactic.ML
changeset 58957 c9e744ea8a38
parent 58956 a816aa3ff391
child 58963 26bf09b95dda
equal deleted inserted replaced
58956:a816aa3ff391 58957:c9e744ea8a38
    22   val dtac: thm -> int -> tactic
    22   val dtac: thm -> int -> tactic
    23   val etac: thm -> int -> tactic
    23   val etac: thm -> int -> tactic
    24   val ftac: thm -> int -> tactic
    24   val ftac: thm -> int -> tactic
    25   val ares_tac: thm list -> int -> tactic
    25   val ares_tac: thm list -> int -> tactic
    26   val solve_tac: thm list -> int -> tactic
    26   val solve_tac: thm list -> int -> tactic
    27   val bimatch_tac: (bool * thm) list -> int -> tactic
    27   val bimatch_tac: Proof.context -> (bool * thm) list -> int -> tactic
    28   val match_tac: thm list -> int -> tactic
    28   val match_tac: Proof.context -> thm list -> int -> tactic
    29   val ematch_tac: thm list -> int -> tactic
    29   val ematch_tac: Proof.context -> thm list -> int -> tactic
    30   val dmatch_tac: thm list -> int -> tactic
    30   val dmatch_tac: Proof.context -> thm list -> int -> tactic
    31   val flexflex_tac: Proof.context -> tactic
    31   val flexflex_tac: Proof.context -> tactic
    32   val distinct_subgoal_tac: int -> tactic
    32   val distinct_subgoal_tac: int -> tactic
    33   val distinct_subgoals_tac: tactic
    33   val distinct_subgoals_tac: tactic
    34   val cut_tac: thm -> int -> tactic
    34   val cut_tac: thm -> int -> tactic
    35   val cut_rules_tac: thm list -> int -> tactic
    35   val cut_rules_tac: thm list -> int -> tactic
   144 fun ares_tac rules = assume_tac  ORELSE'  resolve_tac rules;
   144 fun ares_tac rules = assume_tac  ORELSE'  resolve_tac rules;
   145 
   145 
   146 fun solve_tac rules = resolve_tac rules THEN_ALL_NEW assume_tac;
   146 fun solve_tac rules = resolve_tac rules THEN_ALL_NEW assume_tac;
   147 
   147 
   148 (*Matching tactics -- as above, but forbid updating of state*)
   148 (*Matching tactics -- as above, but forbid updating of state*)
   149 fun bimatch_tac brules i = PRIMSEQ (Thm.biresolution NONE true brules i);
   149 fun bimatch_tac ctxt brules i = PRIMSEQ (Thm.biresolution (SOME ctxt) true brules i);
   150 fun match_tac rules  = bimatch_tac (map (pair false) rules);
   150 fun match_tac ctxt rules = bimatch_tac ctxt (map (pair false) rules);
   151 fun ematch_tac rules = bimatch_tac (map (pair true) rules);
   151 fun ematch_tac ctxt rules = bimatch_tac ctxt (map (pair true) rules);
   152 fun dmatch_tac rls   = ematch_tac (map make_elim rls);
   152 fun dmatch_tac ctxt rls = ematch_tac ctxt (map make_elim rls);
   153 
   153 
   154 (*Smash all flex-flex disagreement pairs in the proof state.*)
   154 (*Smash all flex-flex disagreement pairs in the proof state.*)
   155 fun flexflex_tac ctxt = PRIMSEQ (Thm.flexflex_rule (SOME ctxt));
   155 fun flexflex_tac ctxt = PRIMSEQ (Thm.flexflex_rule (SOME ctxt));
   156 
   156 
   157 (*Remove duplicate subgoals.*)
   157 (*Remove duplicate subgoals.*)