read_goal LKThy "H |- E, ord(A), F";
expand(unfold_goal_tac ["ord"]);
expand(pc_tac 1);
expand(resolve_tac [subset_intr RES Union_elim] 1);
expand(resolve_tac [subset_intr RES Union_elim] 2);
val ord_intr = ttop_rule();

read_goal LKThy "H, ord(A), G |- E";
expand(unfold_goal_tac ["ord"] );
val unfold_ordh = ttop_rule();

read_goal LKThy "H |- E, ord(A) & B : A ==> ord(B), F";
expand(pc_tac 1);
expand(resolve_tac [ord_intr] 1);
expand(resolve_tac [unfold_ordh] 1);
expand(pc_tac 1);
expand(resolve_tac [subset_elim] 1); backtrack();
expand(resolve_tac [assume] 2);
expand(resolve_tac [Union_intr] 1);
expand(REPEAT(resolve_tac [assume] 1));
expand(rduplicateh_tac "ord(A)" 1);
expand(resolve_tac [unfold_ordh] 1);
expand(pc_tac 1);
expand(resolve_tac [subset_elim] 1); 
expand(resolve_tac [Union_intr] 1);
expand(resolve_tac [assume] 2);
expand(resolve_tac [assume] 1);
expand(resolve_tac [unfold_ordh] 1);
expand(pc_tac 1); backtrack();
expand(resolve_tac [subset_elim] 1); backtrack(); backtrack();
expand(resolve_tac [Union_intr] 1);
expand(resolve_tac [assume] 3);
expand(resolve_tac [assume] 2);
expand(resolve_tac [assume] 1);
val elim_lemma = ttop_rule();

read_goal LKThy "H, ord(A), G |- E"; 
expand(rcut_tac "a : A" 1);
expand(rcut_tac "ord(a)" 2);
expand(rcut_tac "ord(A) & a : A ==> ord(a)" 2);
expand(resolve_tac [elim_lemma] 2);
expand(pc_tac 2);
expand(rcut_tac "b : a" 2);
expand(rcut_tac "b : A" 3);
expand(resolve_tac [unfold_ordh] 3);
expand(pc_tac 3);
expand(resolve_tac [subset_elim] 3);
expand(resolve_tac [assume] 4);
expand(resolve_tac [Union_intr] 3);
expand(resolve_tac [assume] 3);
expand(resolve_tac [assume] 3);
expand(resolve_tac [thinh] 1);
expand(resolve_tac [thinh] 2);
expand(resolve_tac [thinh] 3);
val ord_elim = ttop_rule();


read_goal LKThy "H, P, Q ==> R ==> S, G |- E";
expand(rcut_tac "P & Q ==> R" 1);
expand(REPEAT(resolve_tac [thinh] 1));
expand(rcut_tac "P & (Q ==> S)" 2);
expand(pc_tac 2);
expand(resolve_tac [thinh] 2);
expand(resolve_tac [thinh] 2);
expand(resolve_tac [thinh] 2);
expand(resolve_tac [and_elim] 2);
val aux_rule = ttop_rule();

read_goal LKThy "H, ord(A), G |- E, P'(A), F"; 
expand(rcut_tac "ord(A) ==> P'(A)" 1);
expand(pc_tac 2);
expand(resolve_tac [thinh] 1);
expand(resolve_tac [thinc] 1);
expand(resolve_tac [induction] 1);
expand(resolve_tac [imp_intr RES thin_all_elim] 1);
expand(res_and_smash_tac [aux_rule] 1);
expand(res_and_smash_tac [elim_lemma] 1);
val ord_induction = ttop_rule();

read_goal LKThy "|- ord(0)";
expand(resolve_tac [ord_intr] 1);
expand(resolve_tac [nullset_elim] 1);
expand(resolve_tac [nullset_elim] 1);

read_goal LKThy "|- ord(A) ==> ord(succ(A))";
expand(pc_tac 1);
expand(resolve_tac [ord_intr] 1);
expand(unfold_goal_tac ["succ"]);
expand(resolve_tac [Un_intr] 1);
expand(resolve_tac [setcons_intr] 1);
expand(determ_resolve_tac ([Un_elim], 1));
expand(determ_resolve_tac ([setcons_elim], 2));
expand(determ_resolve_tac ([nullset_elim], 1));
expand(resolve_tac [ord_elim] 1);
expand(REPEAT(resolve_tac [assume] 1));
expand(resolve_tac [symh RES set_member_cong RES assume] 1);
expand(resolve_tac [ord_elim] 1);
expand(REPEAT(resolve_tac [assume] 1));
expand(resolve_tac [ord_elim] 1);
expand(REPEAT(resolve_tac [assume] 1));
expand(resolve_tac [ord_elim] 1);
expand(resolve_tac [symh RES set_member_cong RES assume] 1);
expand(resolve_tac [assume] 1);
expand(resolve_tac [set_member_cong RES assume] 1);

read_goal LKThy "|- ord(A) & ord(B) ==> (A <= B <=> A : B | A = B)";

3. x3 : A, x14 : x20, x20 : x3, ord(u59) |- ?a42 : u39, x14 : x3, ?Ga64 : u59

1. H, G, ord(u8), ?a11 : u8 ==> P'(?a11), x18 : u8 |- E, F, P'(u8), ?Ga14 : u8, x18 : 0

1. x15 : x21, x21 : x4, x4 : A, x4 : A, ord(x4), x21 : x4, x21 : A |- x15 : x4

  1. x15 : x21, x21 : x4, x4 = A, x21 : A, ord(x21), x15 : x21, x15 : A |- x15 : x4
