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