Structure coalgAxiomsTheory


Source File Identifier index Theory binding index

signature coalgAxiomsTheory =
sig
  type thm = Thm.thm
  
  (*  Axioms  *)
    val mapID : thm
    val mapO : thm
    val map_CONG : thm
    val relO : thm
    val set_map : thm
  
  (*  Definitions  *)
    val Fset_def : thm
    val bisim_def : thm
    val bisimilar_def : thm
    val bquot_def : thm
    val gbisim_def : thm
    val genS_def : thm
    val hom_def : thm
    val iso_def : thm
    val relF_def : thm
    val simple_def : thm
    val subsystem_def : thm
    val system_def : thm
  
  (*  Theorems  *)
    val BIJ_homs_iso : thm
    val Fpushout_def : thm
    val Fpushout_ind : thm
    val INJ_homs_mono : thm
    val SURJ_homs_epi : thm
    val UNIV_system : thm
    val bisim_RUNION : thm
    val bisim_gbisim : thm
    val bisim_system : thm
    val bisimilar_equivalence : thm
    val bisimulations_compose : thm
    val bounded_def : thm
    val bounded_ind : thm
    val bquot_coequalizer : thm
    val bquot_correct : thm
    val coequalizer_def : thm
    val coequalizer_ind : thm
    val coequalizer_thm : thm
    val epi_Fpushout : thm
    val epi_def : thm
    val epi_ind : thm
    val gbisim_equivalence : thm
    val genS_correct : thm
    val hom_ID : thm
    val hom_implies_restr : thm
    val hom_shom : thm
    val homs_compose : thm
    val iso_SYM : thm
    val iso_inj_hom : thm
    val lemma2_4_1 : thm
    val lemma2_4_2 : thm
    val lemma5_3 : thm
    val mapO' : thm
    val map_preserves_INJ : thm
    val map_preserves_funs : thm
    val prop5_1 : thm
    val prop5_7 : thm
    val prop5_8 : thm
    val prop5_9_1 : thm
    val prop5_9_2 : thm
    val prop6_1 : thm
    val prop6_2 : thm
    val relEQ : thm
    val relF_inv : thm
    val relO_EQ : thm
    val rel_monotone : thm
    val sbisimulation_projns_homo : thm
    val set_map' : thm
    val simple_eq3 : thm
    val simple_imp4 : thm
    val subsystem_ALT : thm
    val subsystem_INTER : thm
    val subsystem_INTER2 : thm
    val subsystem_UNION : thm
    val subsystem_refl : thm
    val subsystem_system : thm
    val system_members : thm
    val thm2_5 : thm
    val thm5_2 : thm
    val thm5_4 : thm
    val thm5_5 : thm
    val thm6_3_1 : thm
    val thm6_3_2 : thm
    val thm7_1 : thm
    val thm7_2 : thm
    val thm7_3 : thm
  
  val coalgAxioms_grammars : type_grammar.grammar * term_grammar.grammar
(*
   [simpleSetCat] Parent theory of "coalgAxioms"
   
   [set_map]  Axiom
      
      [oracles: ] [axioms: set_map] [] ⊢ setF ∘ mapF f = IMAGE f ∘ setF
   
   [relO]  Axiom
      
      [oracles: ] [axioms: relO] [] ⊢ relF R ∘ᵣ relF S ⊆ᵣ relF (R ∘ᵣ S)
   
   [map_CONG]  Axiom
      
      [oracles: ] [axioms: map_CONG] []
      ⊢ ∀f g y. (∀x. x ∈ setF y ⇒ f x = g x) ⇒ mapF f y = mapF g y
   
   [mapO]  Axiom
      
      [oracles: ] [axioms: mapO] [] ⊢ mapF f ∘ mapF g = mapF (f ∘ g)
   
   [mapID]  Axiom
      
      [oracles: ] [axioms: mapID] [] ⊢ mapF (λx. x) = (λa. a)
   
   [Fset_def]  Definition
      
      ⊢ ∀A. Fset A = {af | setF af ⊆ A}
   
   [bisim_def]  Definition
      
      ⊢ ∀R A af B bf.
          bisim R (A,af) (B,bf) ⇔
          system (A,af) ∧ system (B,bf) ∧
          ∀a b. R a b ⇒ a ∈ A ∧ b ∈ B ∧ relF R (af a) (bf b)
   
   [bisimilar_def]  Definition
      
      ⊢ ∀As Bs. bisimilar As Bs ⇔ ∃R. bisim R As Bs
   
   [bquot_def]  Definition
      
      ⊢ ∀A af R.
          bquot (A,af) R =
          (partition R A,
           (λap. mapF (eps R A) (af (CHOICE ap)))⟨partition R A⟩)
   
   [gbisim_def]  Definition
      
      ⊢ ∀A af x y. gbisim (A,af) x y ⇔ ∃R. bisim R (A,af) (A,af) ∧ R x y
   
   [genS_def]  Definition
      
      ⊢ ∀As X. genS As X = BIGINTER {V | subsystem V As ∧ X ⊆ V}
   
   [hom_def]  Definition
      
      ⊢ ∀h A af B bf.
          hom h (A,af) (B,bf) ⇔
          system (A,af) ∧ system (B,bf) ∧
          (∀a. a ∈ A ⇒ h a ∈ B ∧ bf (h a) = mapF h (af a)) ∧
          ∀a. a ∉ A ⇒ h a = ARB
   
   [iso_def]  Definition
      
      ⊢ ∀A af B bf.
          iso (A,af) (B,bf) ⇔
          ∃f g.
            hom f (A,af) (B,bf) ∧ hom g (B,bf) (A,af) ∧
            (∀a. a ∈ A ⇒ g (f a) = a) ∧ ∀b. b ∈ B ⇒ f (g b) = b
   
   [relF_def]  Definition
      
      ⊢ ∀R x y.
          relF R x y ⇔ ∃z. setF z ⊆ Rᴾ ∧ mapF FST z = x ∧ mapF SND z = y
   
   [simple_def]  Definition
      
      ⊢ ∀A. simple A ⇔ ∀R. bisim R A A ⇒ ∀x y. R x y ⇒ x = y
   
   [subsystem_def]  Definition
      
      ⊢ ∀V A af.
          subsystem V (A,af) ⇔
          system (A,af) ∧ V ⊆ A ∧ ∃vf. hom (λx. x)⟨V⟩ (V,vf) (A,af)
   
   [system_def]  Definition
      
      ⊢ ∀A af.
          system (A,af) ⇔
          (∀a. a ∈ A ⇒ af a ∈ Fset A) ∧ ∀a. a ∉ A ⇒ af a = ARB
   
   [BIJ_homs_iso]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, mapID, map_CONG] []
      ⊢ hom f (A,af) (B,bf) ∧ BIJ f A B ⇒ iso (A,af) (B,bf)
   
   [Fpushout_def]  Theorem
      
      ⊢ Fpushout (A,af) (B,bf) (C',cf) f g ((P,pf),i1,i2) (:δ) ⇔
        hom f (A,af) (B,bf) ∧ hom g (A,af) (C',cf) ∧ hom i1 (B,bf) (P,pf) ∧
        hom i2 (C',cf) (P,pf) ∧ (i1 ∘ f)⟨A⟩ = (i2 ∘ g)⟨A⟩ ∧
        ∀Q qf j1 j2.
          hom j1 (B,bf) (Q,qf) ∧ hom j2 (C',cf) (Q,qf) ∧
          (j1 ∘ f)⟨A⟩ = (j2 ∘ g)⟨A⟩ ⇒
          ∃!u. hom u (P,pf) (Q,qf) ∧ (u ∘ i1)⟨B⟩ = j1 ∧ (u ∘ i2)⟨C'⟩ = j2
   
   [Fpushout_ind]  Theorem
      
      ⊢ ∀P'.
          (∀A af B bf C cf f g P pf i1 i2.
             P' (A,af) (B,bf) (C,cf) f g ((P,pf),i1,i2) (:δ)) ⇒
          ∀v v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12.
            P' (v,v1) (v2,v3) (v4,v5) v6 v7 ((v8,v9),v10,v11) v12
   
   [INJ_homs_mono]  Theorem
      
      ⊢ hom f (A,af) (B,bf) ∧ INJ f A B ⇒
        ∀C cf g h.
          hom g (C,cf) (A,af) ∧ hom h (C,cf) (A,af) ∧ f ∘ g = f ∘ h ⇒ g = h
   
   [SURJ_homs_epi]  Theorem
      
      ⊢ hom f (A,af) (B,bf) ∧ SURJ f A B ⇒ epi f (A,af) (B,bf) (:γ)
   
   [UNIV_system]  Theorem
      
      ⊢ system (𝕌(:α),af)
   
   [bisim_RUNION]  Theorem
      
      ⊢ bisim R1 As Bs ∧ bisim R2 As Bs ⇒ bisim (R1 ∪ᵣ R2) As Bs
   
   [bisim_gbisim]  Theorem
      
      ⊢ system (A,af) ⇒ bisim (gbisim (A,af)) (A,af) (A,af)
   
   [bisim_system]  Theorem
      
      ⊢ bisim R As Bs ⇒ system As ∧ system Bs
   
   [bisimilar_equivalence]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, relO, mapO, set_map, map_CONG] []
      ⊢ bisimilar equiv_on system
   
   [bisimulations_compose]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, mapO, set_map, map_CONG] []
      ⊢ bisim R (A,af) (B,bf) ∧ bisim Q (B,bf) (C,cf) ⇒
        bisim (Q ∘ᵣ R) (A,af) (C,cf)
   
   [bounded_def]  Theorem
      
      ⊢ bounded (:α) (:β) ⇔
        ∀a A af. system (A,af) ∧ a ∈ A ⇒ ∃f V. INJ f (genS (A,af) {a}) V
   
   [bounded_ind]  Theorem
      
      ⊢ ∀P. P (:α) (:β) ⇒ ∀v v1. P v v1
   
   [bquot_coequalizer]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, set_map, map_CONG] []
      ⊢ system (A,af) ∧ bisim R (A,af) (A,af) ∧ R equiv_on A ⇒
        ∃Rf.
          coequalizer (Rᴾ,Rf) (A,af) FST⟨Rᴾ⟩ SND⟨Rᴾ⟩
            (bquot (A,af) R,eps R A) (:δ)
   
   [bquot_correct]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, mapO, map_CONG] []
      ⊢ system (A,af) ∧ bisim R (A,af) (A,af) ∧ R equiv_on A ⇒
        system (bquot (A,af) R) ∧ hom (eps R A) (A,af) (bquot (A,af) R)
   
   [coequalizer_def]  Theorem
      
      ⊢ coequalizer (A,af) (B,bf) f1 f2 ((C',cf),g) (:δ) ⇔
        hom f1 (A,af) (B,bf) ∧ hom f2 (A,af) (B,bf) ∧
        hom g (B,bf) (C',cf) ∧ (g ∘ f1)⟨A⟩ = (g ∘ f2)⟨A⟩ ∧
        ∀h D df.
          hom h (B,bf) (D,df) ∧ (h ∘ f1)⟨A⟩ = (h ∘ f2)⟨A⟩ ⇒
          ∃!u. hom u (C',cf) (D,df) ∧ h = (u ∘ g)⟨B⟩
   
   [coequalizer_ind]  Theorem
      
      ⊢ ∀P. (∀A af B bf f1 f2 C cf g. P (A,af) (B,bf) f1 f2 ((C,cf),g) (:δ)) ⇒
            ∀v v1 v2 v3 v4 v5 v6 v7 v8 v9.
              P (v,v1) (v2,v3) v4 v5 ((v6,v7),v8) v9
   
   [coequalizer_thm]  Theorem
      
      ⊢ coequalizer (A,af) (B,bf) f1 f2 (Cs,g) (:δ) ⇔
        hom f1 (A,af) (B,bf) ∧ hom f2 (A,af) (B,bf) ∧ hom g (B,bf) Cs ∧
        (g ∘ f1)⟨A⟩ = (g ∘ f2)⟨A⟩ ∧
        ∀h D df.
          hom h (B,bf) (D,df) ∧ (h ∘ f1)⟨A⟩ = (h ∘ f2)⟨A⟩ ⇒
          ∃!u. hom u Cs (D,df) ∧ h = (u ∘ g)⟨B⟩
   
   [epi_Fpushout]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, map_CONG] []
      ⊢ epi f (A,af) (B,bf) (:γ) ⇔
        Fpushout (A,af) (B,bf) (B,bf) f f ((B,bf),(λx. x)⟨B⟩,(λx. x)⟨B⟩)
          (:γ)
   
   [epi_def]  Theorem
      
      ⊢ epi f (A,af) (B,bf) (:γ) ⇔
        hom f (A,af) (B,bf) ∧
        ∀C cf g h.
          hom g (B,bf) (C,cf) ∧ hom h (B,bf) (C,cf) ∧
          (g ∘ f)⟨A⟩ = (h ∘ f)⟨A⟩ ⇒
          g = h
   
   [epi_ind]  Theorem
      
      ⊢ ∀P. (∀f A af B bf. P f (A,af) (B,bf) (:γ)) ⇒
            ∀v v1 v2 v3 v4 v5. P v (v1,v2) (v3,v4) v5
   
   [gbisim_equivalence]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, relO, mapO, set_map, map_CONG] []
      ⊢ system (A,af) ⇒ gbisim (A,af) equiv_on A
   
   [genS_correct]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, mapO, mapID, map_CONG] []
      ⊢ system (A,af) ∧ X ⊆ A ⇒ subsystem (genS (A,af) X) (A,af)
   
   [hom_ID]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, map_CONG] []
      ⊢ system (A,af) ⇒ hom (λx. x)⟨A⟩ (A,af) (A,af)
   
   [hom_implies_restr]  Theorem
      
      ⊢ hom f (A,af) Bs ⇒ f⟨A⟩ = f
   
   [hom_shom]  Theorem
      
      ⊢ hom f (A,af) (B,bf) ⇒ shom f A B
   
   [homs_compose]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG] []
      ⊢ hom f As Bs ∧ hom g Bs Cs ⇒ hom (g ∘ f)⟨FST As⟩ As Cs
   
   [iso_SYM]  Theorem
      
      ⊢ iso As Bs ⇔ iso Bs As
   
   [iso_inj_hom]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG] []
      ⊢ iso (A,af) (B,bf) ∧ hom h (A,af) (C,cf) ∧ INJ h A C ⇒
        ∃j. hom j (B,bf) (C,cf) ∧ INJ j B C
   
   [lemma2_4_1]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO] []
      ⊢ hom (h ∘ g) (A,af) (C,cf) ∧ hom g (A,af) (B,bf) ∧ SURJ g A B ∧
        (∀b. b ∉ B ⇒ h b = ARB) ⇒
        hom h (B,bf) (C,cf)
   
   [lemma2_4_2]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, map_CONG, mapID, mapO] []
      ⊢ hom (h ∘ g) (A,af) (C,cf) ∧ hom h (B,bf) (C,cf) ∧
        (∀a. a ∈ A ⇒ g a ∈ B) ∧ (∀a. a ∉ A ⇒ g a = ARB) ∧ INJ h B C ⇒
        hom g (A,af) (B,bf)
   
   [lemma5_3]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, mapO] []
      ⊢ hom f (A,af) (B,bf) ∧ hom g (A,af) (C,cf) ⇒
        bisim (span A f g) (B,bf) (C,cf)
   
   [mapO']  Theorem
      
      [oracles: DISK_THM] [axioms: mapO] []
      ⊢ ∀x. mapF f (mapF g x) = mapF (f ∘ g) x
   
   [map_preserves_INJ]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, map_CONG, mapID, mapO] []
      ⊢ INJ f A B ⇒ INJ (mapF f) (Fset A) (Fset B)
   
   [map_preserves_funs]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map] []
      ⊢ (∀a. a ∈ A ⇒ f a ∈ B) ⇒ ∀af. af ∈ Fset A ⇒ mapF f af ∈ Fset B
   
   [prop5_1]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, set_map, mapID, map_CONG] []
      ⊢ system (A,af) ⇒ bisim (Δ A) (A,af) (A,af)
   
   [prop5_7]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, set_map, mapID, mapO, map_CONG] []
      ⊢ hom f (A,af) (B,bf) ⇒
        bisim (kernel A f) (A,af) (A,af) ∧ kernel A f equiv_on A
   
   [prop5_8]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, mapO, map_CONG] []
      ⊢ system (A,af) ∧ bisim R (A,af) (A,af) ∧ R equiv_on A ⇒
        system (bquot (A,af) R) ∧ hom (eps R A) (A,af) (bquot (A,af) R)
   
   [prop5_9_1]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, relO, mapO, set_map, map_CONG] []
      ⊢ hom f⟨A⟩ (A,af) (B,bf) ∧ bisim R (A,af) (A,af) ⇒
        bisim (RIMAGE f A R) (B,bf) (B,bf)
   
   [prop5_9_2]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, relO, mapO, set_map, map_CONG] []
      ⊢ hom f⟨A⟩ (A,af) (B,bf) ∧ bisim Q (B,bf) (B,bf) ⇒
        bisim (RINV_IMAGE f A Q) (A,af) (A,af)
   
   [prop6_1]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, map_CONG] []
      ⊢ V ⊆ A ∧ hom (λx. x)⟨V⟩ (V,kf) (A,af) ∧ hom (λx. x)⟨V⟩ (V,lf) (A,af) ⇒
        kf = lf
   
   [prop6_2]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ system (A,af) ⇒
        (subsystem V (A,af) ⇔ V ⊆ A ∧ bisim (Δ V) (A,af) (A,af))
   
   [relEQ]  Theorem
      
      [oracles: DISK_THM] [axioms: map_CONG, set_map, mapO, mapID] []
      ⊢ relF $= = $=
   
   [relF_inv]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, set_map, map_CONG] []
      ⊢ relF Rᵀ x y ⇔ relF R y x
   
   [relO_EQ]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, mapO, set_map, map_CONG] []
      ⊢ relF R ∘ᵣ relF S = relF (R ∘ᵣ S)
   
   [rel_monotone]  Theorem
      
      ⊢ (∀a b. R a b ⇒ S a b) ⇒ ∀A B. relF R A B ⇒ relF S A B
   
   [sbisimulation_projns_homo]  Theorem
      
      [oracles: DISK_THM] [axioms: map_CONG] []
      ⊢ bisim R (A,af) (B,bf) ⇔
        ∃Rf. hom FST⟨Rᴾ⟩ (Rᴾ,Rf) (A,af) ∧ hom SND⟨Rᴾ⟩ (Rᴾ,Rf) (B,bf)
   
   [set_map']  Theorem
      
      [oracles: DISK_THM] [axioms: set_map] []
      ⊢ ∀x x'. x' ∈ setF (mapF f x) ⇔ ∃x''. x' = f x'' ∧ x'' ∈ setF x
   
   [simple_eq3]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, relO, mapO, set_map, map_CONG] []
      ⊢ simple As ⇔ ∀R. bisim R As As ∧ R equiv_on FST As ⇒ R = Δ (FST As)
   
   [simple_imp4]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, mapO] []
      ⊢ simple As ⇒ ∀Bs f g. hom f Bs As ∧ hom g Bs As ⇒ f = g
   
   [subsystem_ALT]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ subsystem V (A,af) ⇔
        V ⊆ A ∧ system (A,af) ∧ hom (λx. x)⟨V⟩ (V,af⟨V⟩) (A,af)
   
   [subsystem_INTER]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ system (A,af) ∧ (∀V. V ∈ VS ⇒ subsystem V (A,af)) ∧ VS ≠ ∅ ⇒
        subsystem (BIGINTER VS) (A,af)
   
   [subsystem_INTER2]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ system (A,af) ∧ subsystem V1 (A,af) ∧ subsystem V2 (A,af) ⇒
        subsystem (V1 ∩ V2) (A,af)
   
   [subsystem_UNION]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ system (A,af) ∧ (∀V. V ∈ VS ⇒ subsystem V (A,af)) ⇒
        subsystem (BIGUNION VS) (A,af)
   
   [subsystem_refl]  Theorem
      
      [oracles: DISK_THM] [axioms: mapID, map_CONG] []
      ⊢ system (A,af) ⇒ subsystem A (A,af)
   
   [subsystem_system]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ subsystem V (A,af) ⇒ system (V,af⟨V⟩)
   
   [system_members]  Theorem
      
      ⊢ system (A,af) ⇒ ∀a b. a ∈ A ∧ b ∈ setF (af a) ⇒ b ∈ A
   
   [thm2_5]  Theorem
      
      [oracles: DISK_THM] [axioms: set_map, mapID, mapO, map_CONG] []
      ⊢ hom h (A,af) (B,bf) ⇔
        (∀a. a ∈ A ⇒ h a ∈ B) ∧ (∀a. a ∉ A ⇒ h a = ARB) ∧
        bisim (Gr h A) (A,af) (B,bf)
   
   [thm5_2]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, set_map, map_CONG] []
      ⊢ bisim Rᵀ Bs As ⇔ bisim R As Bs
   
   [thm5_4]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, mapO, set_map, map_CONG] []
      ⊢ bisim R (A,af) (B,bf) ∧ bisim Q (B,bf) (C,cf) ⇒
        bisim (Q ∘ᵣ R) (A,af) (C,cf)
   
   [thm5_5]  Theorem
      
      ⊢ (∀R. R ∈ Rs ⇒ bisim R As Bs) ∧ system As ∧ system Bs ⇒
        bisim (λa b. ∃R. R ∈ Rs ∧ R a b) As Bs
   
   [thm6_3_1]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, mapO, map_CONG, mapID, set_map] []
      ⊢ hom f (A,af) (B,bf) ∧ subsystem V (A,af) ⇒
        subsystem (IMAGE f V) (B,bf)
   
   [thm6_3_2]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, map_CONG, mapID, set_map] []
      ⊢ hom f (A,af) (B,bf) ∧ subsystem W (B,bf) ⇒
        subsystem (PREIMAGE f W ∩ A) (A,af)
   
   [thm7_1]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, mapO, map_CONG, mapID, set_map] []
      ⊢ hom f (A,af) (B,bf) ⇒
        hom f (A,af) (IMAGE f A,bf⟨IMAGE f A⟩) ∧
        (∀g h C cf.
           hom g (IMAGE f A,bf⟨IMAGE f A⟩) (C,cf) ∧
           hom h (IMAGE f A,bf⟨IMAGE f A⟩) (C,cf) ∧ (h ∘ f)⟨A⟩ = (g ∘ f)⟨A⟩ ⇒
           h = g) ∧
        hom (eps (kernel A f) A) (A,af) (bquot (A,af) (kernel A f)) ∧
        hom (λx. x)⟨IMAGE f A⟩ (IMAGE f A,bf⟨IMAGE f A⟩) (B,bf) ∧
        iso (IMAGE f A,bf⟨IMAGE f A⟩) (bquot (A,af) (kernel A f)) ∧
        ∃mu.
          hom mu (bquot (A,af) (kernel A f)) (B,bf) ∧
          INJ mu (FST (bquot (A,af) (kernel A f))) B
   
   [thm7_2]  Theorem
      
      [oracles: DISK_THM] [axioms: mapO, set_map, map_CONG] []
      ⊢ hom f (A,af) (B,bf) ∧ bisim R (A,af) (A,af) ∧ R ⊆ᵣ kernel A f ∧
        R equiv_on A ⇒
        ∃!fbar. hom fbar (bquot (A,af) R) (B,bf) ∧ f = (fbar ∘ eps R A)⟨A⟩
   
   [thm7_3]  Theorem
      
      [oracles: DISK_THM] [axioms: relO, mapO, mapID, set_map, map_CONG] []
      ⊢ system (A,af) ∧ subsystem B (A,af) ∧ bisim R (A,af) (A,af) ∧
        R equiv_on A ∧ Abbrev (TR = {a | a ∈ A ∧ ∃b. b ∈ B ∧ R a b}) ⇒
        subsystem TR (A,af) ∧
        (let
           Q = CURRY (Rᴾ ∩ B × B)
         in
           bisim Q (B,af⟨B⟩) (B,af⟨B⟩) ∧ Q equiv_on B ∧
           iso (bquot (B,af⟨B⟩) Q) (bquot (TR,af⟨TR⟩) R))
   
   
*)
end


Source File Identifier index Theory binding index

HOL 4, Trindemossen-1