add(subsystem): occurrence count per explicit substitution and the absence of a critical overlap between R and Gc (M3 infrastructure)

This commit is contained in:
sneeker committed 2026-09-22 13:49:00 +02:00
1 parent 591a8cedfb
commit 25edeaa5ce
1 file changed
+24
+24
View File
@@ -38,3 +38,27 @@ Proof. intros. apply red_sub_base. apply rs_r. exact H. Qed.
Print Assumptions red_sub_root_to_red1. Print Assumptions red_sub_root_to_red1.
Print Assumptions red_sub_to_red1. Print Assumptions red_sub_to_red1.
Print Assumptions red_sub_context. Print Assumptions red_sub_context.
Lemma occurs_zfill : forall C k, occurs k (zfill C k) = true.
Proof.
induction C; intros k; simpl.
- rewrite Nat.eqb_refl. reflexivity.
- rewrite IHC. reflexivity.
- rewrite IHC. rewrite orb_true_r. reflexivity.
- rewrite (IHC (S k)). reflexivity.
- rewrite (IHC (S k)). reflexivity.
- rewrite IHC. rewrite orb_true_r. reflexivity.
Qed.
Lemma zfill_occurs0 : forall C body, zfill C 0 = body -> occurs0 body = true.
Proof. intros C body H. rewrite <- H. apply occurs_zfill. Qed.
Lemma R_Gc_disjoint : forall body, occurs0 body = false -> ~ (exists C, zfill C 0 = body).
Proof.
intros body Hf [C HC]. apply zfill_occurs0 in HC.
rewrite Hf in HC. discriminate HC.
Qed.
Print Assumptions occurs_zfill.
Print Assumptions zfill_occurs0.
Print Assumptions R_Gc_disjoint.