Skip to content

Commit e994112

Browse files
committed
Stage work before changing laptop...
1 parent 8aa964f commit e994112

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

examples/lambda/barendregt/boehmScript.sml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4708,17 +4708,18 @@ QED
47084708

47094709
(* NOTE: ‘ltree_paths (BT' X M r) SUBSET ltree_paths (BT' X (M ISUB ss) r)’ doesn't
47104710
hold. Instead, we need to consider certain p and ‘d <= subterm_width M p’.
4711+
This theorem holds even when M is not solvable.
47114712
*)
47124713
Theorem BT_subst_cong :
4713-
!X p M r P d y. FINITE X /\ FV M SUBSET X UNION RANK r /\ y IN X UNION RANK r /\
4714+
!X P d y p M r. FINITE X /\ FV M SUBSET X UNION RANK r /\ y IN X UNION RANK r /\
47144715
P = permutator d /\ subterm_width M p <= d /\
47154716
ltree_lookup (BT' X M r) p <> NONE ==>
47164717
ltree_lookup (BT' X ([P/y] M) r) p <> NONE
47174718
Proof
4718-
Q.X_GEN_TAC ‘X’
4719+
NTAC 4 GEN_TAC
47194720
>> Induct_on ‘p’ >- rw [ltree_lookup]
47204721
>> rw []
4721-
>> POP_ASSUM MP_TAC
4722+
>> Q.PAT_X_ASSUM ‘ltree_lookup (BT' X M r) (h::p) <> NONE MP_TAC
47224723
>> qabbrev_tac ‘P = permutator d’
47234724
>> reverse (Cases_on ‘solvable M’)
47244725
>- simp [BT_def, BT_generator_def, Once ltree_unfold, ltree_lookup_def]
@@ -4730,6 +4731,9 @@ Proof
47304731
MP_TAC (Q.SPECL [‘X’, ‘M’, ‘h::p’, ‘r’] subterm_width_first) \\
47314732
simp [ltree_paths_def])
47324733
>> DISCH_TAC
4734+
>> simp [BT_def, BT_generator_def, Once ltree_unfold, ltree_lookup_def,
4735+
LNTH_fromList]
4736+
(* NOTE: The rest of this proof is mostly taken from subterm_subst_cong_lemma *)
47334737
>> cheat
47344738
QED
47354739

0 commit comments

Comments
 (0)