src/Provers/quantifier1.ML
changeset 31197 c1c163ec6c44
parent 31166 a90fe83f58ea
child 35762 af3ff2ba4c54
equal deleted inserted replaced
31177:c39994cb152a 31197:c1c163ec6c44
    88           t = Bound n andalso not(loose_bvar1(s,n)) end
    88           t = Bound n andalso not(loose_bvar1(s,n)) end
    89    | NONE => false);
    89    | NONE => false);
    90 
    90 
    91 fun extract_conj fst xs t = case dest_conj t of NONE => NONE
    91 fun extract_conj fst xs t = case dest_conj t of NONE => NONE
    92     | SOME(conj,P,Q) =>
    92     | SOME(conj,P,Q) =>
    93         (if not fst andalso def xs P then SOME(xs,P,Q) else
    93         (if def xs P then (if fst then NONE else SOME(xs,P,Q)) else
    94          if def xs Q then SOME(xs,Q,P) else
    94          if def xs Q then SOME(xs,Q,P) else
    95          (case extract_conj false xs P of
    95          (case extract_conj false xs P of
    96             SOME(xs,eq,P') => SOME(xs,eq, conj $ P' $ Q)
    96             SOME(xs,eq,P') => SOME(xs,eq, conj $ P' $ Q)
    97           | NONE => (case extract_conj false xs Q of
    97           | NONE => (case extract_conj false xs Q of
    98                        SOME(xs,eq,Q') => SOME(xs,eq,conj $ P $ Q')
    98                        SOME(xs,eq,Q') => SOME(xs,eq,conj $ P $ Q')
    99                      | NONE => NONE)));
    99                      | NONE => NONE)));
   100 
   100 
   101 fun extract_imp fst xs t = case dest_imp t of NONE => NONE
   101 fun extract_imp fst xs t = case dest_imp t of NONE => NONE
   102     | SOME(imp,P,Q) => if not fst andalso def xs P then SOME(xs,P,Q)
   102     | SOME(imp,P,Q) => if def xs P then (if fst then NONE else SOME(xs,P,Q))
   103                        else (case extract_conj false xs P of
   103                        else (case extract_conj false xs P of
   104                                SOME(xs,eq,P') => SOME(xs, eq, imp $ P' $ Q)
   104                                SOME(xs,eq,P') => SOME(xs, eq, imp $ P' $ Q)
   105                              | NONE => (case extract_imp false xs Q of
   105                              | NONE => (case extract_imp false xs Q of
   106                                           NONE => NONE
   106                                           NONE => NONE
   107                                         | SOME(xs,eq,Q') =>
   107                                         | SOME(xs,eq,Q') =>