isabelle - Simplify meta-universally quantified assumptions with equality -


sorry not being able come shorter example.

i have proof state of

 1. ⋀e1 t1 l e2 t2 g1.        typing (g1 @ (x, u) # g2) e1 t1 ⟹        typing (g1 @ g2) e1 t1 ⟹        (⋀xa. xa |∉| l ⟹               typing ((xa, t1) # g1 @ (x, u) # g2) (open e2 (exp_fvar xa))                t2) ⟹        (⋀xa g1a.            xa |∉| l ⟹            (xa, t1) # g1 = g1a ⟹            x |∉| fv (open e2 (exp_fvar xa)) ⟹            typing (g1a @ g2) (open e2 (exp_fvar xa)) t2) ⟹        x |∉| fv e1 ⟹ x |∉| fv e2 ⟹ typing (g1 @ g2) (exp_let e1 e2) t2 

note fourth premise (the large one): universally meta-quantifies on g1a, g1a determined equation there. substitute (and simplify conclusion of premise) , auto able solve goal.

can make simplifier solve this?

i guess small example is

lemma foo:   "(⋀ g.  x#xs = g ⟹ p x ⟹ f g) ⟹ f (x#xs)" apply simp 

there related question equalities under existentials.

this problem can solved reliably using simproc. induct proof method in ~~/src/tools/induct.ml has implementation this, might able adapt code. idea move equations front using induct.rearrange_eqs_simproc , use appropriate 1 point rules eliminate equality.


Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -