src/HOL/Prolog/Type.ML
author wenzelm
Thu, 13 Dec 2001 15:45:03 +0100
changeset 12486 0ed8bdd883e0
parent 11701 3d51fbf81c17
child 13208 965f95a3abd9
permissions -rw-r--r--
isatool expandshort;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9015
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     1
val prog_Type = prog_Func @ [good_typeof,common_typeof];
12486
0ed8bdd883e0 isatool expandshort;
wenzelm
parents: 11701
diff changeset
     2
fun pgoal s = (case Goal s of _ => by (prolog_tac prog_Type));
9015
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     3
val p = ptac prog_Type 1;
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     4
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     5
pgoal "typeof (abs(%n. abs(%m. abs(%p. p and (n eq m))))) ?T";
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     6
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     7
pgoal "typeof (fix (%x. x)) ?T";
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
     8
11701
3d51fbf81c17 sane numerals (stage 1): added generic 1, removed 1' and 2 on nat,
wenzelm
parents: 9015
diff changeset
     9
pgoal "typeof (fix (%fact. abs(%n. (app fact (n - 0))))) ?T";
9015
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    10
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    11
pgoal "typeof (fix (%fact. abs(%n. cond (n eq 0) (S 0) \
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    12
				\(n * (app fact (n - (S 0))))))) ?T";
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    13
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    14
pgoal "typeof (abs(%v. 0)) ?T"; (*correct only solution (?A1 -> nat) *)
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    15
Goal "typeof (abs(%v. 0)) ?T";
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    16
by (prolog_tac [bad1_typeof,common_typeof]); (* 1st result ok*)
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    17
back(); (* 2nd result (?A1 -> ?A1) wrong *)
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    18
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    19
(*pgoal "typeof (abs(%v. abs(%v. app v v))) ?T"; correctly fails*)
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    20
Goal "typeof (abs(%v. abs(%v. app v v))) ?T";
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    21
by (prolog_tac [bad2_typeof,common_typeof]); 
8006e9009621 added HOL/Prolog
oheimb
parents:
diff changeset
    22
	(* wrong result ((?A3 -> ?B3) -> ?A3 -> ?B3)*)