>>:wf(R)}.g(x,y,z):D(x,y,z); \
+ "[| ALL x:A. ALL y:B. ALL z:{z:C.<>,>>:wf(R)}.g(x,y,z):D(x,y,z); \
\ P |] ==> \
\ P";
by (REPEAT (ares_tac prems 1));
diff -r f1a1817659e6 -r d7f033c74b38 src/CCL/subset.ML
--- a/src/CCL/subset.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CCL/subset.ML Fri Oct 10 17:10:12 1997 +0200
@@ -115,7 +115,7 @@
"(a : Compl(B)) <-> (~a:B)",
"(a : {b}) <-> (a=b)",
"(a : {}) <-> False",
- "(a : {x.P(x)}) <-> P(a)" ]);
+ "(a : {x. P(x)}) <-> P(a)" ]);
val set_congs = [ball_cong, bex_cong, INT_cong, UN_cong];
diff -r f1a1817659e6 -r d7f033c74b38 src/CCL/typecheck.ML
--- a/src/CCL/typecheck.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CCL/typecheck.ML Fri Oct 10 17:10:12 1997 +0200
@@ -35,9 +35,9 @@
fun solve s = prove_goal Type.thy s (fn prems => [tac prems])
in map solve
["a : {x:A. b:{y:B(a).P()}} ==> : {x:Sigma(A,B).P(x)}",
- "a : {x:A.P(inl(x))} ==> inl(a) : {x:A+B.P(x)}",
- "b : {x:B.P(inr(x))} ==> inr(b) : {x:A+B.P(x)}",
- "a : {x:Nat.P(succ(x))} ==> succ(a) : {x:Nat.P(x)}",
+ "a : {x:A. P(inl(x))} ==> inl(a) : {x:A+B. P(x)}",
+ "b : {x:B. P(inr(x))} ==> inr(b) : {x:A+B. P(x)}",
+ "a : {x:Nat. P(succ(x))} ==> succ(a) : {x:Nat. P(x)}",
"h : {x:A. t : {y:List(A).P(x$y)}} ==> h$t : {x:List(A).P(x)}"
] end;
@@ -54,12 +54,12 @@
qed "applyT2";
val prems = goal Type.thy
- "[| a:A; a:A ==> P(a) |] ==> a : {x:A.P(x)}";
+ "[| a:A; a:A ==> P(a) |] ==> a : {x:A. P(x)}";
by (fast_tac (type_cs addSIs prems) 1);
qed "rcall_lemma1";
val prems = goal Type.thy
- "[| a:{x:A.Q(x)}; [| a:A; Q(a) |] ==> P(a) |] ==> a : {x:A.P(x)}";
+ "[| a:{x:A. Q(x)}; [| a:A; Q(a) |] ==> P(a) |] ==> a : {x:A. P(x)}";
by (cut_facts_tac prems 1);
by (fast_tac (type_cs addSIs prems) 1);
qed "rcall_lemma2";
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/Arith.ML
--- a/src/CTT/Arith.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/Arith.ML Fri Oct 10 17:10:12 1997 +0200
@@ -385,7 +385,7 @@
[ (rew_tac(absdiff_typing::prems)) ]);
qed_goalw "modC_succ" Arith.thy [mod_def]
-"[| a:N; b:N |] ==> succ(a) mod b = rec(succ(a mod b) |-| b, 0, %x y.succ(a mod b)) : N"
+"[| a:N; b:N |] ==> succ(a) mod b = rec(succ(a mod b) |-| b, 0, %x y. succ(a mod b)) : N"
(fn prems=>
[ (rew_tac(absdiff_typing::prems)) ]);
@@ -429,7 +429,7 @@
(*for case analysis on whether a number is 0 or a successor*)
qed_goal "iszero_decidable" Arith.thy
- "a:N ==> rec(a, inl(eq), %ka kb.inr()) : \
+ "a:N ==> rec(a, inl(eq), %ka kb. inr()) : \
\ Eq(N,a,0) + (SUM x:N. Eq(N,a, succ(x)))"
(fn prems=>
[ (NE_tac "a" 1),
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/Arith.thy
--- a/src/CTT/Arith.thy Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/Arith.thy Fri Oct 10 17:10:12 1997 +0200
@@ -15,10 +15,10 @@
"#*",div,mod :: "[i,i]=>i" (infixr 70)
rules
- add_def "a#+b == rec(a, b, %u v.succ(v))"
- diff_def "a-b == rec(b, a, %u v.rec(v, 0, %x y.x))"
+ add_def "a#+b == rec(a, b, %u v. succ(v))"
+ diff_def "a-b == rec(b, a, %u v. rec(v, 0, %x y. x))"
absdiff_def "a|-|b == (a-b) #+ (b-a)"
mult_def "a#*b == rec(a, 0, %u v. b #+ v)"
- mod_def "a mod b == rec(a, 0, %u v. rec(succ(v) |-| b, 0, %x y.succ(v)))"
- div_def "a div b == rec(a, 0, %u v. rec(succ(u) mod b, succ(v), %x y.v))"
+ mod_def "a mod b == rec(a, 0, %u v. rec(succ(v) |-| b, 0, %x y. succ(v)))"
+ div_def "a div b == rec(a, 0, %u v. rec(succ(u) mod b, succ(v), %x y. v))"
end
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/Bool.thy
--- a/src/CTT/Bool.thy Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/Bool.thy Fri Oct 10 17:10:12 1997 +0200
@@ -15,5 +15,5 @@
Bool_def "Bool == T+T"
true_def "true == inl(tt)"
false_def "false == inr(tt)"
- cond_def "cond(a,b,c) == when(a, %u.b, %u.c)"
+ cond_def "cond(a,b,c) == when(a, %u. b, %u. c)"
end
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/CTT.ML
--- a/src/CTT/CTT.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/CTT.ML Fri Oct 10 17:10:12 1997 +0200
@@ -109,7 +109,7 @@
(*Simplify the parameter of a unary type operator.*)
qed_goal "subst_eqtyparg" CTT.thy
- "a=c : A ==> (!!z.z:A ==> B(z) type) ==> B(a)=B(c)"
+ "a=c : A ==> (!!z. z:A ==> B(z) type) ==> B(a)=B(c)"
(fn prems=>
[ (rtac subst_typeL 1),
(rtac refl_type 2),
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/CTT.thy
--- a/src/CTT/CTT.thy Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/CTT.thy Fri Oct 10 17:10:12 1997 +0200
@@ -113,21 +113,21 @@
NE
"[| p: N; a: C(0); !!u v. [| u: N; v: C(u) |] ==> b(u,v): C(succ(u)) |]
- ==> rec(p, a, %u v.b(u,v)) : C(p)"
+ ==> rec(p, a, %u v. b(u,v)) : C(p)"
NEL
"[| p = q : N; a = c : C(0);
!!u v. [| u: N; v: C(u) |] ==> b(u,v) = d(u,v): C(succ(u)) |]
- ==> rec(p, a, %u v.b(u,v)) = rec(q,c,d) : C(p)"
+ ==> rec(p, a, %u v. b(u,v)) = rec(q,c,d) : C(p)"
NC0
"[| a: C(0); !!u v. [| u: N; v: C(u) |] ==> b(u,v): C(succ(u)) |]
- ==> rec(0, a, %u v.b(u,v)) = a : C(0)"
+ ==> rec(0, a, %u v. b(u,v)) = a : C(0)"
NC_succ
"[| p: N; a: C(0);
!!u v. [| u: N; v: C(u) |] ==> b(u,v): C(succ(u)) |] ==>
- rec(succ(p), a, %u v.b(u,v)) = b(p, rec(p, a, %u v.b(u,v))) : C(succ(p))"
+ rec(succ(p), a, %u v. b(u,v)) = b(p, rec(p, a, %u v. b(u,v))) : C(succ(p))"
(*The fourth Peano axiom. See page 91 of Martin-Lof's book*)
zero_ne_succ
@@ -136,54 +136,54 @@
(*The Product of a family of types*)
- ProdF "[| A type; !!x. x:A ==> B(x) type |] ==> PROD x:A.B(x) type"
+ ProdF "[| A type; !!x. x:A ==> B(x) type |] ==> PROD x:A. B(x) type"
ProdFL
"[| A = C; !!x. x:A ==> B(x) = D(x) |] ==>
- PROD x:A.B(x) = PROD x:C.D(x)"
+ PROD x:A. B(x) = PROD x:C. D(x)"
ProdI
- "[| A type; !!x. x:A ==> b(x):B(x)|] ==> lam x.b(x) : PROD x:A.B(x)"
+ "[| A type; !!x. x:A ==> b(x):B(x)|] ==> lam x. b(x) : PROD x:A. B(x)"
ProdIL
"[| A type; !!x. x:A ==> b(x) = c(x) : B(x)|] ==>
- lam x.b(x) = lam x.c(x) : PROD x:A.B(x)"
+ lam x. b(x) = lam x. c(x) : PROD x:A. B(x)"
- ProdE "[| p : PROD x:A.B(x); a : A |] ==> p`a : B(a)"
- ProdEL "[| p=q: PROD x:A.B(x); a=b : A |] ==> p`a = q`b : B(a)"
+ ProdE "[| p : PROD x:A. B(x); a : A |] ==> p`a : B(a)"
+ ProdEL "[| p=q: PROD x:A. B(x); a=b : A |] ==> p`a = q`b : B(a)"
ProdC
"[| a : A; !!x. x:A ==> b(x) : B(x)|] ==>
- (lam x.b(x)) ` a = b(a) : B(a)"
+ (lam x. b(x)) ` a = b(a) : B(a)"
ProdC2
- "p : PROD x:A.B(x) ==> (lam x. p`x) = p : PROD x:A.B(x)"
+ "p : PROD x:A. B(x) ==> (lam x. p`x) = p : PROD x:A. B(x)"
(*The Sum of a family of types*)
- SumF "[| A type; !!x. x:A ==> B(x) type |] ==> SUM x:A.B(x) type"
+ SumF "[| A type; !!x. x:A ==> B(x) type |] ==> SUM x:A. B(x) type"
SumFL
- "[| A = C; !!x. x:A ==> B(x) = D(x) |] ==> SUM x:A.B(x) = SUM x:C.D(x)"
+ "[| A = C; !!x. x:A ==> B(x) = D(x) |] ==> SUM x:A. B(x) = SUM x:C. D(x)"
- SumI "[| a : A; b : B(a) |] ==> : SUM x:A.B(x)"
- SumIL "[| a=c:A; b=d:B(a) |] ==> = : SUM x:A.B(x)"
+ SumI "[| a : A; b : B(a) |] ==> : SUM x:A. B(x)"
+ SumIL "[| a=c:A; b=d:B(a) |] ==> = : SUM x:A. B(x)"
SumE
- "[| p: SUM x:A.B(x); !!x y. [| x:A; y:B(x) |] ==> c(x,y): C() |]
- ==> split(p, %x y.c(x,y)) : C(p)"
+ "[| p: SUM x:A. B(x); !!x y. [| x:A; y:B(x) |] ==> c(x,y): C() |]
+ ==> split(p, %x y. c(x,y)) : C(p)"
SumEL
- "[| p=q : SUM x:A.B(x);
+ "[| p=q : SUM x:A. B(x);
!!x y. [| x:A; y:B(x) |] ==> c(x,y)=d(x,y): C()|]
- ==> split(p, %x y.c(x,y)) = split(q, % x y.d(x,y)) : C(p)"
+ ==> split(p, %x y. c(x,y)) = split(q, % x y. d(x,y)) : C(p)"
SumC
"[| a: A; b: B(a); !!x y. [| x:A; y:B(x) |] ==> c(x,y): C() |]
- ==> split(, %x y.c(x,y)) = c(a,b) : C()"
+ ==> split(, %x y. c(x,y)) = c(a,b) : C()"
- fst_def "fst(a) == split(a, %x y.x)"
- snd_def "snd(a) == split(a, %x y.y)"
+ fst_def "fst(a) == split(a, %x y. x)"
+ snd_def "snd(a) == split(a, %x y. y)"
(*The sum of two types*)
@@ -200,22 +200,22 @@
PlusE
"[| p: A+B; !!x. x:A ==> c(x): C(inl(x));
!!y. y:B ==> d(y): C(inr(y)) |]
- ==> when(p, %x.c(x), %y.d(y)) : C(p)"
+ ==> when(p, %x. c(x), %y. d(y)) : C(p)"
PlusEL
"[| p = q : A+B; !!x. x: A ==> c(x) = e(x) : C(inl(x));
!!y. y: B ==> d(y) = f(y) : C(inr(y)) |]
- ==> when(p, %x.c(x), %y.d(y)) = when(q, %x.e(x), %y.f(y)) : C(p)"
+ ==> when(p, %x. c(x), %y. d(y)) = when(q, %x. e(x), %y. f(y)) : C(p)"
PlusC_inl
"[| a: A; !!x. x:A ==> c(x): C(inl(x));
!!y. y:B ==> d(y): C(inr(y)) |]
- ==> when(inl(a), %x.c(x), %y.d(y)) = c(a) : C(inl(a))"
+ ==> when(inl(a), %x. c(x), %y. d(y)) = c(a) : C(inl(a))"
PlusC_inr
"[| b: B; !!x. x:A ==> c(x): C(inl(x));
!!y. y:B ==> d(y): C(inr(y)) |]
- ==> when(inr(b), %x.c(x), %y.d(y)) = d(b) : C(inr(b))"
+ ==> when(inr(b), %x. c(x), %y. d(y)) = d(b) : C(inr(b))"
(*The type Eq*)
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/ex/elim.ML
--- a/src/CTT/ex/elim.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/ex/elim.ML Fri Oct 10 17:10:12 1997 +0200
@@ -148,7 +148,7 @@
writeln"Axiom of choice. Proof without fst, snd. Harder still!";
val prems = goal CTT.thy
- "[| A type; !!x.x:A ==> B(x) type; \
+ "[| A type; !!x. x:A ==> B(x) type; \
\ !!x y.[| x:A; y:B(x) |] ==> C(x,y) type \
\ |] ==> ?a : PROD h: (PROD x:A. SUM y:B(x). C(x,y)). \
\ (SUM f: (PROD x:A. B(x)). PROD x:A. C(x, f`x))";
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/ex/equal.ML
--- a/src/CTT/ex/equal.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/ex/equal.ML Fri Oct 10 17:10:12 1997 +0200
@@ -24,7 +24,7 @@
(*in the "rec" formulation of addition, 0+n=n *)
val prems =
-goal CTT.thy "p:N ==> rec(p,0, %y z.succ(y)) = p : N";
+goal CTT.thy "p:N ==> rec(p,0, %y z. succ(y)) = p : N";
by (rtac EqE 1);
by (resolve_tac elim_rls 1 THEN resolve_tac prems 1);
by (rew_tac prems);
@@ -33,7 +33,7 @@
(*the harder version, n+0=n: recursive, uses induction hypothesis*)
val prems =
-goal CTT.thy "p:N ==> rec(p,0, %y z.succ(z)) = p : N";
+goal CTT.thy "p:N ==> rec(p,0, %y z. succ(z)) = p : N";
by (rtac EqE 1);
by (resolve_tac elim_rls 1 THEN resolve_tac prems 1);
by (hyp_rew_tac prems);
@@ -43,8 +43,8 @@
(*Associativity of addition*)
val prems =
goal CTT.thy
- "[| a:N; b:N; c:N |] ==> rec(rec(a, b, %x y.succ(y)), c, %x y.succ(y)) = \
-\ rec(a, rec(b, c, %x y.succ(y)), %x y.succ(y)) : N";
+ "[| a:N; b:N; c:N |] ==> rec(rec(a, b, %x y. succ(y)), c, %x y. succ(y)) = \
+\ rec(a, rec(b, c, %x y. succ(y)), %x y. succ(y)) : N";
by (NE_tac "a" 1);
by (hyp_rew_tac prems);
result();
@@ -53,7 +53,7 @@
(*Martin-Lof (1984) page 62: pairing is surjective*)
val prems =
goal CTT.thy
- "p : Sum(A,B) ==> = p : Sum(A,B)";
+ "p : Sum(A,B) ==> = p : Sum(A,B)";
by (rtac EqE 1);
by (resolve_tac elim_rls 1 THEN resolve_tac prems 1);
by (DEPTH_SOLVE_1 (rew_tac prems)); (*!!!!!!!*)
@@ -62,7 +62,7 @@
val prems =
goal CTT.thy "[| a : A; b : B |] ==> \
-\ (lam u. split(u, %v w.)) ` = : SUM x:B.A";
+\ (lam u. split(u, %v w.)) ` = : SUM x:B. A";
by (rew_tac prems);
result();
@@ -71,7 +71,7 @@
val prems =
goal CTT.thy
"(lam f. lam x. f`(f`x)) ` (lam u. split(u, %v w.)) = \
-\ lam x. x : PROD x:(SUM y:N.N). (SUM y:N.N)";
+\ lam x. x : PROD x:(SUM y:N. N). (SUM y:N. N)";
by (resolve_tac reduction_rls 1);
by (resolve_tac intrL_rls 3);
by (rtac EqE 4);
diff -r f1a1817659e6 -r d7f033c74b38 src/CTT/ex/typechk.ML
--- a/src/CTT/ex/typechk.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/CTT/ex/typechk.ML Fri Oct 10 17:10:12 1997 +0200
@@ -45,17 +45,17 @@
result();
writeln"typechecking an application of fst";
-goal CTT.thy "(lam u. split(u, %v w.v)) ` <0, succ(0)> : ?A";
+goal CTT.thy "(lam u. split(u, %v w. v)) ` <0, succ(0)> : ?A";
by (typechk_tac[]);
result();
writeln"typechecking the predecessor function";
-goal CTT.thy "lam n. rec(n, 0, %x y.x) : ?A";
+goal CTT.thy "lam n. rec(n, 0, %x y. x) : ?A";
by (typechk_tac[]);
result();
writeln"typechecking the addition function";
-goal CTT.thy "lam n. lam m. rec(n, m, %x y.succ(y)) : ?A";
+goal CTT.thy "lam n. lam m. rec(n, m, %x y. succ(y)) : ?A";
by (typechk_tac[]);
result();
@@ -74,7 +74,7 @@
result();
writeln"typechecking fst (as a function object) ";
-goal CTT.thy "lam i. split(i, %j k.j) : ?A";
+goal CTT.thy "lam i. split(i, %j k. j) : ?A";
by (typechk_tac[]);
by N_tac;
result();
diff -r f1a1817659e6 -r d7f033c74b38 src/LCF/LCF.ML
--- a/src/LCF/LCF.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/LCF/LCF.ML Fri Oct 10 17:10:12 1997 +0200
@@ -65,7 +65,7 @@
REPEAT(rstac(conjI::prems)1)]);
val ext = prove_goal thy
- "(!!x::'a::cpo. f(x)=(g(x)::'b::cpo)) ==> (%x.f(x))=(%x.g(x))"
+ "(!!x::'a::cpo. f(x)=(g(x)::'b::cpo)) ==> (%x. f(x))=(%x. g(x))"
(fn [prem] => [REPEAT(rstac[less_anti_sym, less_ext, allI,
prem RS eq_imp_less1,
prem RS eq_imp_less2]1)]);
@@ -79,7 +79,7 @@
val ap_term = refl RS cong;
val ap_thm = refl RSN (2,cong);
-val UU_abs = prove_goal thy "(%x::'a::cpo.UU) = UU"
+val UU_abs = prove_goal thy "(%x::'a::cpo. UU) = UU"
(fn _ => [rtac less_anti_sym 1, rtac minimal 2,
rtac less_ext 1, rtac allI 1, rtac minimal 1]);
@@ -89,7 +89,7 @@
(fn prems=> [rtac less_anti_sym 1,rstac prems 1,rtac minimal 1]);
-val tr_induct = prove_goal thy "[| P(UU); P(TT); P(FF) |] ==> ALL b.P(b)"
+val tr_induct = prove_goal thy "[| P(UU); P(TT); P(FF) |] ==> ALL b. P(b)"
(fn prems => [rtac allI 1, rtac mp 1,
res_inst_tac[("p","b")]tr_cases 2,
fast_tac (FOL_cs addIs prems) 1]);
diff -r f1a1817659e6 -r d7f033c74b38 src/LCF/LCF.thy
--- a/src/LCF/LCF.thy Fri Oct 10 16:29:41 1997 +0200
+++ b/src/LCF/LCF.thy Fri Oct 10 17:10:12 1997 +0200
@@ -99,12 +99,12 @@
Note that "easiness" of types is not taken into account
because it cannot be expressed schematically; flatness could be. *)
- adm_less "adm(%x.t(x) << u(x))"
+ adm_less "adm(%x. t(x) << u(x))"
adm_not_less "adm(%x.~ t(x) << u)"
- adm_not_free "adm(%x.A)"
- adm_subst "adm(P) ==> adm(%x.P(t(x)))"
- adm_conj "[| adm(P); adm(Q) |] ==> adm(%x.P(x)&Q(x))"
- adm_disj "[| adm(P); adm(Q) |] ==> adm(%x.P(x)|Q(x))"
- adm_imp "[| adm(%x.~P(x)); adm(Q) |] ==> adm(%x.P(x)-->Q(x))"
- adm_all "(!!y.adm(P(y))) ==> adm(%x.ALL y.P(y,x))"
+ adm_not_free "adm(%x. A)"
+ adm_subst "adm(P) ==> adm(%x. P(t(x)))"
+ adm_conj "[| adm(P); adm(Q) |] ==> adm(%x. P(x)&Q(x))"
+ adm_disj "[| adm(P); adm(Q) |] ==> adm(%x. P(x)|Q(x))"
+ adm_imp "[| adm(%x.~P(x)); adm(Q) |] ==> adm(%x. P(x)-->Q(x))"
+ adm_all "(!!y. adm(P(y))) ==> adm(%x. ALL y. P(y,x))"
end
diff -r f1a1817659e6 -r d7f033c74b38 src/LCF/fix.ML
--- a/src/LCF/fix.ML Fri Oct 10 16:29:41 1997 +0200
+++ b/src/LCF/fix.ML Fri Oct 10 17:10:12 1997 +0200
@@ -22,7 +22,7 @@
structure Fix:FIX =
struct
-val adm_eq = prove_goal LCF.thy "adm(%x.t(x)=(u(x)::'a::cpo))"
+val adm_eq = prove_goal LCF.thy "adm(%x. t(x)=(u(x)::'a::cpo))"
(fn _ => [rewtac eq_def,
REPEAT(rstac[adm_conj,adm_less]1)]);
@@ -41,7 +41,7 @@
val not_eq_UU = prove_goal LCF.thy "ALL p. ~p=UU <-> (p=TT | p=FF)"
(fn _ => [tac]) RS spec;
-val adm_not_eq_tr = prove_goal LCF.thy "ALL p::tr.adm(%x. ~t(x)=p)"
+val adm_not_eq_tr = prove_goal LCF.thy "ALL p::tr. adm(%x. ~t(x)=p)"
(fn _ => [rtac tr_induct 1,
REPEAT(simp_tac (LCF_ss addsimps [not_eq_TT,not_eq_FF,not_eq_UU]) 1 THEN
REPEAT(rstac [adm_disj,adm_eq] 1))]) RS spec;
@@ -80,7 +80,7 @@
val FIX2 = FIX_pair_conj RS conjunct2;
val induct2 = prove_goal LCF.thy
- "[| adm(%p.P(FST(p),SND(p))); P(UU::'a,UU::'b);\
+ "[| adm(%p. P(FST(p),SND(p))); P(UU::'a,UU::'b);\
\ ALL x y. P(x,y) --> P(f(x),g(y)) |] ==> P(FIX(f),FIX(g))"
(fn prems => [EVERY1
[res_inst_tac [("f","f"),("g","g")] (standard(FIX1 RS ssubst)),