proposition: Lemma CASE_LAM_spec t ts ctx p v offset : vec_pos v TS = enc_cs (t :: ts) -> vec_pos v CTX = enc_cs ctx -> vec_pos v B = 0 -> (offset, CASE_LAM p offset) // (offset, v) ->> (p, vec_change (vec_change (vec_change v TS (enc_cs ts)) CTX (enc_cs (t::ctx))) A 0).
proof: Proof. rewrite (counters_eta v) /= => -> -> ->. apply: (concat_sss_compute_trans 0). { by apply: UNPACK_spec. } apply: (concat_sss_compute_trans 1). { by apply: PACK_spec. } apply: (concat_sss_compute_trans 2). { by apply: JMP_spec. } by apply: sss_compute_refl. Qed.
imports: Undecidability(MinskyMachines.MM MinskyMachines.MMA LambdaCalculus.Krivine LambdaCalculus.Util.Krivine_facts) Undecidability.Shared.Libs.DLW(Vec.pos Vec.vec Code.sss) PeanoNat List Lia ssreflect ssrbool ssrfun