theory SubstMethods (* Its seems that it's best to load the Eisbach tools last *) imports IVSubst WellformedL "HOL-Eisbach.Eisbach_Tools" begin
text‹
See Eisbach/Examples.thy as well as Eisbach User Manual.
for various substitution situations. It seems that if undirected and we throw all the
at them to try to solve in one shot, the automatic methods are *sometimes* unable
handle the different variants, so some guidance is needed.
we split into subgoals using fresh\_prodN and intro conjI
'add', for example, will be induction premises that will contain freshness facts or freshness conditions from
obtains
different arguments for different things or just lump into one bucket›
method fresh_subst_mth_aux uses add = (
(match conclusion in"atom z ♯ (Γ::Γ)[x::=v]\<Gamma>v"for z x v Γ ==>‹auto simp add: fresh_subst_gv_if[of "atom z" Γ v x] add›)
| (match conclusion in"atom z ♯ (v'::v)[x::=v]vv"for z x v v' ==>‹auto simp add: v.fresh fresh_subst_v_if pure_fresh subst_v_v_def add› )
| (match conclusion in"atom z ♯ (ce::ce)[x::=v]cev"for z x v ce ==>‹auto simp add: fresh_subst_v_if subst_v_ce_def add› )
| (match conclusion in"atom z ♯ (Δ::Δ)[x::=v]\<Delta>v"for z x v Δ ==>‹auto simp add: fresh_subst_v_if fresh_subst_dv_if add› )
| (match conclusion in"atom z ♯ Γ'[x::=v]\<Gamma>v @ Γ"for z x v Γ' Γ ==>‹metis add › )
| (match conclusion in"atom z ♯ (τ::τ)[x::=v]\<tau>v"for z x v τ ==>‹auto simp add: v.fresh fresh_subst_v_if pure_fresh subst_v_τ_def add› )
| (match conclusion in"atom z ♯ ({||} :: bv fset)"for z ==>‹auto simp add: fresh_empty_fset›) (* tbc delta and types *)
| (auto simp add: add x_fresh_b pure_fresh) (* Cases where there is no subst and so can most likely get what we want from induction premises *)
)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.