src/HOL/ex/svc_funcs.ML
changeset 56256 1e01c159e7d9
parent 56245 84fc7dfa3cd4
equal deleted inserted replaced
56255:968667bbb8d2 56256:1e01c159e7d9
   197             Buildin("=>", [fm (not pos) p, fm pos q])
   197             Buildin("=>", [fm (not pos) p, fm pos q])
   198       | fm pos (Const(@{const_name Not}, _) $ p) =
   198       | fm pos (Const(@{const_name Not}, _) $ p) =
   199             Buildin("NOT", [fm (not pos) p])
   199             Buildin("NOT", [fm (not pos) p])
   200       | fm pos (Const(@{const_name True}, _)) = TrueExpr
   200       | fm pos (Const(@{const_name True}, _)) = TrueExpr
   201       | fm pos (Const(@{const_name False}, _)) = FalseExpr
   201       | fm pos (Const(@{const_name False}, _)) = FalseExpr
   202       | fm pos (Const("SVC_Oracle.iff_keep", _) $ p $ q) =
   202       | fm pos (Const(@{const_name iff_keep}, _) $ p $ q) =
   203              (*polarity doesn't matter*)
   203              (*polarity doesn't matter*)
   204             Buildin("=", [fm pos p, fm pos q])
   204             Buildin("=", [fm pos p, fm pos q])
   205       | fm pos (Const("SVC_Oracle.iff_unfold", _) $ p $ q) =
   205       | fm pos (Const(@{const_name iff_unfold}, _) $ p $ q) =
   206             Buildin("AND",   (*unfolding uses both polarities*)
   206             Buildin("AND",   (*unfolding uses both polarities*)
   207                          [Buildin("=>", [fm (not pos) p, fm pos q]),
   207                          [Buildin("=>", [fm (not pos) p, fm pos q]),
   208                           Buildin("=>", [fm (not pos) q, fm pos p])])
   208                           Buildin("=>", [fm (not pos) q, fm pos p])])
   209       | fm pos (t as Const(@{const_name HOL.eq}, Type ("fun", [T,_])) $ x $ y) =
   209       | fm pos (t as Const(@{const_name HOL.eq}, Type ("fun", [T,_])) $ x $ y) =
   210             let val tx = tm x and ty = tm y
   210             let val tx = tm x and ty = tm y