Theory conditions_relativized_infinitary

theory conditions_relativized_infinitary
  imports conditions_relativized conditions_negative_infinitary
begin   

subsection ‹Infinitary Relativized Conditions›

text‹We define and interrelate infinitary variants for some previously introduced
 axiomatic conditions on operators.›

definition iADDIr::"('w σ ⇒ 'w σ) ⇒ bool" (‹iADDIr›)
  where "iADDIr φ  ≡ ∀S. let U=⋁S in (φ(⋁S) =⇧U ⋁⟦φ S⟧)"
definition iADDIr_a::"('w σ ⇒ 'w σ) ⇒ bool" (‹iADDIra›)
  where "iADDIra φ ≡ ∀S. let U=⋁S in (φ(⋁S) ≤⇧U ⋁⟦φ S⟧)" 
definition iADDIr_b::"('w σ ⇒ 'w σ) ⇒ bool" (‹iADDIrb›)
  where "iADDIrb φ ≡ ∀S. let U=⋁S in (⋁⟦φ S⟧ ≤⇧U φ(⋁S))" 

definition inADDIr::"('w σ ⇒ 'w σ) ⇒ bool" (‹inADDIr›)
  where "inADDIr φ  ≡ ∀S. let U=⋁S in (φ(⋁S) =⇧U ⋀⟦φ S⟧)"
definition inADDIr_a::"('w σ ⇒ 'w σ) ⇒ bool" (‹inADDIra›)
  where "inADDIra φ ≡ ∀S. let U=⋁S in (⋀⟦φ S⟧ ≤⇧U φ(⋁S))"  
definition inADDIr_b::"('w σ ⇒ 'w σ) ⇒ bool" (‹inADDIrb›)
  where "inADDIrb φ ≡ ∀S. let U=⋁S in (φ(⋁S) ≤⇧U ⋀⟦φ S⟧)" 

declare iADDIr_def[cond] iADDIr_a_def[cond] iADDIr_b_def[cond]
        inADDIr_def[cond] inADDIr_a_def[cond] inADDIr_b_def[cond]

definition iMULTr::"('w σ ⇒ 'w σ) ⇒ bool" (‹iMULTr›)
  where "iMULTr φ  ≡ ∀S. let U=⋀S in (φ(⋀S) =⇩U ⋀⟦φ S⟧)"
definition iMULTr_a::"('w σ ⇒ 'w σ) ⇒ bool" (‹iMULTra›)
  where "iMULTra φ ≡ ∀S. let U=⋀S in (φ(⋀S) ≤⇩U ⋀⟦φ S⟧)"
definition iMULTr_b::"('w σ ⇒ 'w σ) ⇒ bool" (‹iMULTrb›)
  where "iMULTrb φ ≡ ∀S. let U=⋀S in (⋀⟦φ S⟧ ≤⇩U φ(⋀S))"

definition inMULTr::"('w σ ⇒ 'w σ) ⇒ bool" (‹inMULTr›)
  where "inMULTr φ  ≡ ∀S. let U=⋀S in (φ(⋀S) =⇩U ⋁⟦φ S⟧)"
definition inMULTr_a::"('w σ ⇒ 'w σ) ⇒ bool" (‹inMULTra›)
  where "inMULTra φ ≡ ∀S. let U=⋀S in (⋁⟦φ S⟧ ≤⇩U φ(⋀S))"
definition inMULTr_b::"('w σ ⇒ 'w σ) ⇒ bool" (‹inMULTrb›)
  where "inMULTrb φ ≡ ∀S. let U=⋀S in (φ(⋀S) ≤⇩U ⋁⟦φ S⟧)"

declare iMULTr_def[cond] iMULTr_a_def[cond] iMULTr_b_def[cond]
        inMULTr_def[cond] inMULTr_a_def[cond] inMULTr_b_def[cond]

lemma iADDIr_char: "iADDIr φ = (iADDIra φ ∧ iADDIrb φ)" unfolding cond setequ_char setequ_out_char subset_out_char by (meson setequ_char)
lemma iMULTr_char: "iMULTr φ = (iMULTra φ ∧ iMULTrb φ)" unfolding cond setequ_char setequ_in_char subset_in_char by (meson setequ_char)

lemma inADDIr_char: "inADDIr φ = (inADDIra φ ∧ inADDIrb φ)" unfolding cond setequ_char setequ_out_char subset_out_char by (meson setequ_char)
lemma inMULTr_char: "inMULTr φ = (inMULTra φ ∧ inMULTrb φ)" unfolding cond setequ_char setequ_in_char subset_in_char by (meson setequ_char)


text‹Dual interrelations.›
lemma iADDIr_dual1: "iADDIra φ = iMULTrb φd" unfolding cond by (smt (z3) BA_cmpl_equ BA_cp BA_deMorgan2 dual_invol iDM_a iDM_b im_prop1 op_dual_def setequ_ext subset_in_char subset_out_char)
lemma iADDIr_dual2: "iADDIrb φ = iMULTra φd" unfolding cond by (smt (z3) BA_cmpl_equ BA_cp BA_deMorgan2 dual_invol iDM_a iDM_b im_prop1 op_dual_def setequ_ext subset_in_char subset_out_char)
lemma iADDIr_dual:  "iADDIr φ = iMULTr φd" using iADDIr_char iADDIr_dual1 iADDIr_dual2 iMULTr_char by blast

lemma inADDIr_dual1: "inADDIra φ = inMULTrb φd" unfolding cond by (smt (z3) BA_cmpl_equ compl_def dual_invol iDM_a iDM_b im_prop3 op_dual_def setequ_ext subset_in_def subset_in_out)
lemma inADDIr_dual2: "inADDIrb φ = inMULTra φd" unfolding cond by (smt (z3) BA_cmpl_equ compl_def dual_invol iDM_a iDM_b im_prop3 op_dual_def setequ_ext subset_in_def subset_in_out)
lemma inADDIr_dual:  "inADDIr φ = inMULTr φd" using inADDIr_char inADDIr_dual1 inADDIr_dual2 inMULTr_char by blast

text‹Complement interrelations.›
lemma iADDIr_a_cmpl: "iADDIra φ = inADDIra φ-" unfolding cond by (smt (z3) compl_def dualcompl_invol iDM_b im_prop2 setequ_ext subset_out_def svfun_compl_def)
lemma iADDIr_b_cmpl: "iADDIrb φ = inADDIrb φ-" unfolding cond by (smt (z3) compl_def iDM_b im_prop2 setequ_ext sfun_compl_invol subset_out_def svfun_compl_def)
lemma iADDIr_cmpl: "iADDIr φ = inADDIr φ-" by (simp add: iADDIr_a_cmpl iADDIr_b_cmpl iADDIr_char inADDIr_char)

lemma iMULTr_a_cmpl: "iMULTra φ = inMULTra φ-" unfolding cond by (smt (z3) compl_def iDM_b im_prop2 setequ_ext subset_in_def svfun_compl_def)
lemma iMULTr_b_cmpl: "iMULTrb φ = inMULTrb φ-" unfolding cond by (smt (z3) compl_def dualcompl_invol iDM_a im_prop2 setequ_ext subset_in_def svfun_compl_def)
lemma iMULTr_cmpl: "MULTr φ = nMULTr φ-" by (simp add: MULTr_a_cmpl MULTr_b_cmpl MULTr_char nMULTr_char)

text‹Fixed-point interrelations.›
lemma iADDIr_a_fpc: "iADDIra φ = iADDIra φfp-" unfolding cond subset_out_def image_def ofp_fixpoint_compl_def supremum_def sdiff_def by (smt (verit))
lemma iADDIr_a_fp: "iADDIra φ = inADDIra φfp" by (metis iADDIr_a_cmpl iADDIr_a_fpc sfun_compl_invol)
lemma iADDIr_b_fpc: "iADDIrb φ = iADDIrb φfp-" unfolding cond subset_out_def image_def ofp_fixpoint_compl_def supremum_def sdiff_def by (smt (verit))
lemma iADDIr_b_fp: "iADDIrb φ = inADDIrb φfp" by (metis iADDIr_b_cmpl iADDIr_b_fpc sfun_compl_invol)

lemma iMULTr_a_fp: "iMULTra φ = iMULTra φfp" unfolding cond subset_in_def image_def by (smt (z3) dimpl_def infimum_def ofp_invol op_fixpoint_def)
lemma iMULTr_a_fpc: "iMULTra φ = inMULTra φfp-" using iMULTr_a_cmpl iMULTr_a_fp by blast
lemma iMULTr_b_fp: "iMULTrb φ = iMULTrb φfp" unfolding cond subset_in_def image_def dimpl_def infimum_def op_fixpoint_def by (smt (verit))
lemma iMULTr_b_fpc: "iMULTrb φ = inMULTrb φfp-" using iMULTr_b_cmpl iMULTr_b_fp by blast

end