38 |(Const("op |",_)$A$B) => ([A,B], fn [th1,th2] => [th1,th2] MRS qe_disjI) |
38 |(Const("op |",_)$A$B) => ([A,B], fn [th1,th2] => [th1,th2] MRS qe_disjI) |
39 |(Const("op -->",_)$A$B) => ([A,B], fn [th1,th2] => [th1,th2] MRS qe_impI) |
39 |(Const("op -->",_)$A$B) => ([A,B], fn [th1,th2] => [th1,th2] MRS qe_impI) |
40 |(Const("op =", Type ("fun",[Type ("bool", []),_]))$A$B) => ([A,B], fn [th1,th2] => [th1,th2] MRS qe_eqI) |
40 |(Const("op =", Type ("fun",[Type ("bool", []),_]))$A$B) => ([A,B], fn [th1,th2] => [th1,th2] MRS qe_eqI) |
41 |(Const("Not",_)$p) => ([p],fn [th] => th RS qe_Not) |
41 |(Const("Not",_)$p) => ([p],fn [th] => th RS qe_Not) |
42 |(Const("Ex",_)$Abs(xn,xT,p)) => |
42 |(Const("Ex",_)$Abs(xn,xT,p)) => |
43 let val (xn1,p1) = variant_abs(xn,xT,p) |
43 let val (xn1,p1) = Syntax.variant_abs(xn,xT,p) |
44 in ([p1], |
44 in ([p1], |
45 fn [th1_1] => |
45 fn [th1_1] => |
46 let val th2 = [th1_1,nfnp (snd (qe_get_terms th1_1))] MRS trans |
46 let val th2 = [th1_1,nfnp (snd (qe_get_terms th1_1))] MRS trans |
47 val eth1 = (forall_intr (cterm_of sg (Free(xn1,xT))) th2) COMP qe_exI |
47 val eth1 = (forall_intr (cterm_of sg (Free(xn1,xT))) th2) COMP qe_exI |
48 val th3 = qfnp (snd(qe_get_terms eth1)) |
48 val th3 = qfnp (snd(qe_get_terms eth1)) |