src/Pure/logic.ML
changeset 4667 6328d427a339
parent 4631 c7fa4ae34495
child 4679 24917efb31b5
equal deleted inserted replaced
4666:b7c4e4ade1aa 4667:6328d427a339
   322   orelse
   322   orelse
   323    (exists (apl (lhs, op occs)) (rhs :: prems))
   323    (exists (apl (lhs, op occs)) (rhs :: prems))
   324   orelse
   324   orelse
   325    (null prems andalso
   325    (null prems andalso
   326     Pattern.matches (#tsig (Sign.rep_sg sign)) (lhs, rhs))
   326     Pattern.matches (#tsig (Sign.rep_sg sign)) (lhs, rhs))
   327   orelse
   327 (*  orelse
   328    (case lhs of
   328    (case lhs of
   329       (f as Free _) $ (Var _) => exists (fn p => f occs p) prems orelse
   329       (f as Free _) $ (Var _) => exists (fn p => f occs p) prems orelse
   330                                  (null prems andalso f occs rhs)
   330                                  (null prems andalso f occs rhs)
   331     | _ => false);
   331     | _ => false)*);
   332 (*the condition "null prems" in the last cases is necessary because
   332 (*the condition "null prems" in the last cases is necessary because
   333   conditional rewrites with extra variables in the conditions may terminate
   333   conditional rewrites with extra variables in the conditions may terminate
   334   although the rhs is an instance of the lhs. Example:
   334   although the rhs is an instance of the lhs. Example:
   335   ?m < ?n ==> f(?n) == f(?m)*)
   335   ?m < ?n ==> f(?n) == f(?m)*)
   336 (*FIXME: proper test: lhs does not match a subterm of a premise
   336 (*FIXME: proper test: lhs does not match a subterm of a premise