|
Definitions
|
xl-holconst twf: (('a × 'a)SET)SET
|
∀ r •
r ∈ twf ≡ r ∈ wf ∧ r ∈ Transitive
|
|
|
Theorems
|
xl-gft
(* 7 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 6 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 5 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 4 *) ⌜(y, x) ∈ r +⌝
(* 3 *) ⌜¬ y ∈ s⌝
(* 2 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 1 *) ⌜(y', x') ∈ r +⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (fc_tac [list_∀_elim [⌜r⌝,⌜y⌝,⌜x⌝] tc_decomp_thm]);
(* *** Goal "1.1" *** *)
|
|
xl-gft
(* 8 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 7 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 6 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 5 *) ⌜(y, x) ∈ r +⌝
(* 4 *) ⌜¬ y ∈ s⌝
(* 3 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 2 *) ⌜(y', x') ∈ r +⌝
(* 1 *) ⌜(y, x) ∈ r⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (spec_nth_asm_tac 7 ⌜y⌝);
(* *** Goal "1.1.1" *** *)
|
|
xl-gft
(* 11 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 10 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 9 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 8 *) ⌜(y, x) ∈ r +⌝
(* 7 *) ⌜¬ y ∈ s⌝
(* 6 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 5 *) ⌜(y', x') ∈ r +⌝
(* 4 *) ⌜(y, x) ∈ r⌝
(* 3 *) ⌜(y'', y) ∈ r +⌝
(* 2 *) ⌜∀ z• (z, y'') ∈ r + ⇒ z ∈ s⌝
(* 1 *) ⌜¬ y'' ∈ s⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (all_fc_tac [tran_tc_thm2]);
a (spec_nth_asm_tac 10 ⌜y''⌝);
a (asm_fc_tac[]);
(* *** Goal "1.1.2" *** *)
|
|
xl-gft
(* 9 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 8 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 7 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 6 *) ⌜(y, x) ∈ r +⌝
(* 5 *) ⌜¬ y ∈ s⌝
(* 4 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 3 *) ⌜(y', x') ∈ r +⌝
(* 2 *) ⌜(y, x) ∈ r⌝
(* 1 *) ⌜∀ y'• (y', y) ∈ r + ⇒ y' ∈ s⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (spec_nth_asm_tac 7 ⌜y⌝);
a (spec_nth_asm_tac 3 ⌜z⌝);
(* *** Goal "1.2" *** *)
|
|
xl-gft
(* 9 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 8 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 7 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 6 *) ⌜(y, x) ∈ r +⌝
(* 5 *) ⌜¬ y ∈ s⌝
(* 4 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 3 *) ⌜(y', x') ∈ r +⌝
(* 2 *) ⌜(y, z) ∈ r +⌝
(* 1 *) ⌜(z, x) ∈ r⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (spec_nth_asm_tac 8 ⌜z⌝);
(* *** Goal "1.2.1" *** *)
|
|
xl-gft
(* 12 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 11 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 10 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 9 *) ⌜(y, x) ∈ r +⌝
(* 8 *) ⌜¬ y ∈ s⌝
(* 7 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 6 *) ⌜(y', x') ∈ r +⌝
(* 5 *) ⌜(y, z) ∈ r +⌝
(* 4 *) ⌜(z, x) ∈ r⌝
(* 3 *) ⌜(y'', z) ∈ r +⌝
(* 2 *) ⌜∀ z• (z, y'') ∈ r + ⇒ z ∈ s⌝
(* 1 *) ⌜¬ y'' ∈ s⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (lemma_tac ⌜(z, x) ∈ r +⌝ THEN1 fc_tac [∈_tc_thm]);
a (lemma_tac ⌜(y'', x) ∈ r +⌝ THEN1 strip_asm_tac (list_∀_elim [⌜r⌝,⌜y''⌝,⌜z⌝,⌜x⌝] tran_tc_thm2));
a (spec_nth_asm_tac 12 ⌜y''⌝);
a (spec_nth_asm_tac 6 ⌜z'⌝);
(* *** Goal "1.2.2" *** *)
|
|
xl-gft
(* 10 *) ⌜∀ s• (∀ x• (∀ y• (y, x) ∈ r ⇒ y ∈ s) ⇒ x ∈ s) ⇒ (∀ x• x ∈ s)⌝
(* 9 *) ⌜∀ y
• (y, x) ∈ r
⇒ y
∈ {x
|(∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s)
⇒ (∀ y• (y, x) ∈ r + ⇒ y ∈ s)}⌝
(* 8 *) ⌜∀ y• (y, x) ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 7 *) ⌜(y, x) ∈ r +⌝
(* 6 *) ⌜¬ y ∈ s⌝
(* 5 *) ⌜∀ y• (y, x') ∈ r + ⇒ (∀ z• (z, y) ∈ r + ⇒ z ∈ s) ⇒ y ∈ s⌝
(* 4 *) ⌜(y', x') ∈ r +⌝
(* 3 *) ⌜(y, z) ∈ r +⌝
(* 2 *) ⌜(z, x) ∈ r⌝
(* 1 *) ⌜∀ y• (y, z) ∈ r + ⇒ y ∈ s⌝
(* ?⊢ *) ⌜y' ∈ s⌝
|
|
xl-sml
a (asm_fc_tac[]);
(* *** Goal "2" *** *)
|
|
xl-sml
a (spec_nth_asm_tac 3 ⌜x⌝);
(* *** Goal "2.1" *** *)
|
|
xl-sml
a (spec_nth_asm_tac 5 ⌜y'⌝);
a (asm_fc_tac[]);
(* *** Goal "2.2" *** *)
|
|
xl-sml
a (asm_fc_tac[]);
val tcwf_lemma1 = save_pop_thm "tcwf_lemma1";
set_goal([],⌜∀r• r ∈ wf ⇒ ∀s• (∀t• (∀u• (u,t) ∈ r+ ⇒ u ∈ s) ⇒ t ∈ s) ⇒ (∀e• e ∈ s)⌝);
a (REPEAT strip_tac THEN fc_tac [tcwf_lemma1]);
a (spec_nth_asm_tac 2 ⌜e⌝);
a (list_spec_nth_asm_tac 3 [⌜e⌝,⌜s⌝,⌜u⌝]);
a (spec_nth_asm_tac 7 ⌜y⌝);
a (spec_nth_asm_tac 4 ⌜u'⌝);
val tcwf_lemma2 = save_pop_thm "tcwf_lemma2";
set_goal([],⌜∀r• r ∈ wf ⇒ r+ ∈ twf⌝);
a (REPEAT strip_tac);
a (fc_tac [tcwf_lemma2]);
a (pure_rewrite_tac [get_spec ⌜twf⌝,get_spec ⌜wf⌝, tran_tc_thm]);
a (REPEAT strip_tac);
a (list_spec_nth_asm_tac 2 [⌜s⌝,⌜x⌝]);
a (spec_nth_asm_tac 3 ⌜t⌝);
a (spec_nth_asm_tac 4 ⌜y⌝);
val tc_wf_twf_thm = save_pop_thm "tc_wf_twf_thm";
|
|
|