Theory HOL.Alethe_cvc5_Rewrites
theory Alethe_cvc5_Rewrites
imports "Alethe_Rare_Nary_Ops"
begin
named_theorems rewrite_ite_eq ‹cvc5 specific›
lemma [rewrite_ite_eq]:
fixes C::"bool" and t1::"'a::type" and t2::"'a::type"
shows "NO_MATCH cvc_a (undefined C t1 t2) ⟹
(if C then ((if C then t1 else t2) = t1) else ((if C then t1 else t2) = t2)) = True"
by simp
named_theorems rewrite_or_not_refl ‹added in postprocessing›
lemma [rewrite_or_not_refl]:
fixes t::'a and xs::"bool cvc_ListVar"
shows "NO_MATCH cvc_a (undefined t xs) ⟹
((cvc_list_right (∨) (¬(t = t)) xs)) = (cvc_list_both (∨) False xs (ListVar []))"
unfolding cvc_list_both_def cvc_list_right_def
apply (cases xs)
subgoal for xs'
apply (induction xs')
apply simp_all
done
done
named_theorems rewrite_distinct_binary_elim ‹added in postprocessing›
lemma [rewrite_distinct_binary_elim]:
fixes t::"bool"
shows "NO_MATCH cvc_a (undefined t) ⟹
¬(t = t) = False"
by simp
end